QScroll区域与垂直滚动的问题
QScrollArea issue with vertical scroll
我读了几页关于QScrollArea的页面,但我无法解决我的问题。我有下一个代码:
QDialog *window = new QDialog;
window->resize(300, 300);
for(int i = 0; i < 50; ++i)
{
QLabel *label = new QLabel(window);
label->move(10, i * 15);
label->setText("Text");
}
QScrollArea *area = new QScrollArea;
area->setWidget(window);
area->show();
似乎没有出现来自QScrollArea的垂直滚动。我不能使用 QVBoxLayout,因为在我的 QDialog 上,我不仅有垂直对齐的 QLabels(这只是我的 QDialog 的简化版本)。
QScrollArea 不会获得滚动条,除非里面的 QWidget 增长。仅仅将一些QLabels移出界外并不能使父QWidget增长,尤其是在没有QLayout的情况下。
但是,如果您手动调整它们的大小,使QWidget大于QScrollAreay,您将获得预期的滚动条:
QDialog *window = new QDialog;
window->resize(300, 600); //< 600px high widget
for(int i = 0; i < 50; ++i)
{
QLabel *label = new QLabel(window);
label->move(10, i * 15);
label->setText("Text");
}
QScrollArea *area = new QScrollArea;
area->setWidget(window);
area->resize(300,300); //< Inside a 300px high scrollarea, expect scrollbars!
area->show();
请注意,现在您将拥有两个滚动条,因为垂直滚动条意味着没有足够的空间容纳我们的 300px 宽度。您可以使用area->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
强行隐藏水平滚动条
您也可以始终强制垂直滚动条与area->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
一起显示,但这本身并不能解决您的问题。在 300px 的区域内,您仍然有一个 300px 的小部件,并且滚动条没有任何空间可以移动。
确保QWidget足够大,可以容纳它所包含的所有内容,这是你想要做的,QScrollArea会适应。通常我们使用布局,但您也可以手动使其工作。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- CListCtrl 更新滚动条问题
- 滚动条缩略图跟踪长度 基于图像的水平适合调整窗口大小时出现问题
- 富编辑控件中的鼠标滚轮滚动滞后/缓慢.如何解决此问题
- 黑莓 10 SDK 测试版 2 中的列表视图滚动问题
- QScroll区域与垂直滚动的问题
- 在检查数字是否在范围内时,无符号int的滚动问题
- 问题5.3 QPlainTextEdit实现滚动锁定
- c++ SDL2 /滚动碰撞问题
- Qt c++ QMenuBar在滚动时的布局问题
- 滚动区域中的大小调整问题
- Qt调整窗口大小以适应滚动区域问题中的纵横比