【发布时间】:2017-03-19 22:54:00
【问题描述】:
我使用的是 Qt 5.8。我有我的自定义 QFrame(称为 MyQFrame),它由其他几个 QWidget 组成,并且可以(并且将)包含我的自定义 MyQFrame 的其他实例。我为 MyQFrame 设置了最小尺寸。 MyQFrame 使用 QGridLayout 作为布局。
这个MyQFrame被放置在QTabWidget的QScrollArea里面。 QScrollArea 设置为可调整大小 (setWidgetResizable(true))。在 MyQFrame 中,我尝试将大小策略设置为扩展 (setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);),但没有效果。
这是(抽象的)我创建 QTabWidget 和 QScrollArea 的方式:
QTabWidget* tabWidget = new QTabWidget();
QScrollArea* firstTab = new QScrollArea();
firstTab->setWidgetResizable(true);
tabWidget->addTab(firstTab, "first tab");
MyQFrame* myFrame1 = new MyQFrame();
firstTab->setWidget(myFrame1);
// ... adding other MyQFrames inside this one using methods in MyQFrame ...
我无法让滚动区域正常工作。而不是扩展嵌套 MyQFrames 的父母并添加滚动条是最后一个孩子被其他 MyQFrames 重叠。看起来我错过了 MyQFrames 的 setWidgetResizable 之类的东西,但这种方法只在 QScrollArea 中。我不知道我现在应该尝试什么。我对此还是很陌生。
从下图应该更清楚了。
【问题讨论】:
-
我尝试在 MyQFrame (3000x3000) 中将最小尺寸设置为某个疯狂的值,然后出现滚动条。然而,MyQFrames 的重叠非常糟糕。
标签: c++ qt qwidget qscrollarea qframe