我正在使用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重叠 . 看起来我错过了像 setWidgetResizable
这样的MyQFrames,但这个方法只在QScrollArea中 . 我不知道我现在应该尝试什么 . 我还是很陌生 .
从下面的图片中可以更清楚 .
1 回答
正如我所说,我在MyQFrame中使用QGridLayout . 我必须将此布局的大小限制设置为最小大小,如下所示:
layout->setSizeConstraint(QLayout::SetMinimumSize);
. 现在它的工作方式我想要的 .