我正在使用Qt 5.8。我有我的自定义QFrame(称为MyQFrame),它由几个其他QWidgets组成,可以(并且将)包含我的自定义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的父项并添加滚动条是最后一个孩子被其他MyQFrame重叠。看起来我为MyQFrames遗漏了setWidgetResizable
之类的内容,但此方法仅在QScrollArea中。我不知道我现在应该尝试什么。我还是很陌生。
从下图中可以更清楚。
答案 0 :(得分:0)
正如我所说,我在MyQFrame中使用QGridLayout。我必须将此布局的大小限制设置为最小大小,如下所示:layout->setSizeConstraint(QLayout::SetMinimumSize);
。现在它正在按照我想要的方式工作。