【发布时间】:2017-11-03 21:02:00
【问题描述】:
我正在尝试使 QGridLayout 可滚动。它可能包含几个自定义小部件,小部件的数量不固定。当有超过 x 个小部件时,QGridLayout 必须是可滚动的,x 是任意数字。
问题是,当我使用 QScrollArea 时,QScrollArea 似乎隐藏了整个布局(仅显示滚动区域的背景颜色)。当我单独使用 QGridLayout 时,我的视图 - 当然 - 不可滚动,但一切正常。
我可能遗漏了什么,我的猜测是:
- 我必须以某种方式修复可滚动区域的大小,但我不确定这是否必要,或者我是否已经无意识地这样做了
- 现有 QScrollArea 的父 Widget 或子 Widget 通过异常实现阻止 QScrollArea 正常动作。
这是一段涉及的代码:
QScrollArea *scrollArea = new QScrollArea;
QWidget *resultsPage = new QWidget;
booksGrid = new QGridLayout;
booksGrid->setSizeConstraint(QLayout::SetMinAndMaxSize);
resultsPage->setLayout(booksGrid);
scrollArea->setBackgroundRole(QPalette::Dark);
scrollArea->setWidget(resultsPage);
mainWidget->addWidget(scrollArea);
另外,booksGrid 被声明为一个类属性,mainWidget 是一个 QStackedWidget。
欢迎任何帮助,如果您需要更多信息,请告诉我!
【问题讨论】:
-
如果您不使用
booksGrid->setSizeConstraint(QLayout::SetMinAndMaxSize);,它会改变什么吗? -
一点也不,但是这条线无论如何都是必要的,看看我的回答来解决问题;)
-
我对您在回答中实际描述的内容有点怀疑。你应该在你的问题中提到你的自定义小部件(或者我可以问。在这种情况下,我可能没有提供我的答案。)但是,问题解决了。 48 小时后您可以accept your own answer。
-
是的,无论如何感谢您的帮助!