我正在尝试在QGridLayout和QScrollArea中布置一个方形自定义(子类)QWidgets的网格 .
我想要它的工作方式是选择 QGridLayout
列的数量并创建正确大小的方块 .
我已经尝试过的是
-
手动布置/调整QWidgets的大小,但这很邋and而且很慢
-
将
QScrollArea::widgetsResized
设置为true可正确调整宽度,但不能调整高度,请参阅screenshot .
我已经尝试设置 QSizePolicy
并覆盖 QWidget::heightForWidth
以及在我的自定义QWidget派生类中设置 QScrollArea::widgetsResized
,如下所示:
CustomWidget::CustomWidget(...)
{
...
QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Preferred);
policy.setHeightForWidth(true);
setSizePolicy(policy);
}
...
int CustomWidget::heightForWidth(int width) const
{
return width; // square
}
但 CustomWidget::heightForWidth
永远不会被召唤 .
任何帮助,将不胜感激 .
编辑:我已经做了this answer建议,我的自定义小部件是在布局(QGridLayout) .
1 回答
看来你错过了
hasHeightForWidth
的实现 . 以下代码段正常: