首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有垂直滚动的QScrollArea问题

带有垂直滚动的QScrollArea问题
EN

Stack Overflow用户
提问于 2015-01-11 00:36:07
回答 1查看 3.3K关注 0票数 1

我读过几页关于QScrollArea的文章,我无法解决我的问题。我有下一个代码:

代码语言:javascript
运行
复制
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版本)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-11 00:47:39

除非内部的QScrollArea增长,否则QWidget不会得到滚动条。仅仅将一些QLabels移出边界并不能使父QWidget增长,特别是没有QLayout。

但是,如果手动调整它们的大小,使QWidget大于QScrollAreay,您将得到预期的滚动条:

代码语言:javascript
运行
复制
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();

请注意,现在您将两个滚动条,因为垂直滚动条意味着没有足够的空间,我们的300‘t宽度了。您可以使用area->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);强制隐藏水平滚动条。

您也可以总是强迫垂直滚动条与area->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);一起出现,但这本身并不能解决您的问题。在300‘t区域中仍然有一个300’t小部件,滚动条将没有任何移动空间。

确保QWidget足够大,它包含的一切都是您想要做的,QScrollArea将进行调整。通常我们使用布局,但你也可以让它的手工工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27882746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档