我正在尝试在 QGridLayout 和 QScrollArea 内布置方形自定义(子类)QWidget 网格。
我希望它工作的方式是选择QGridLayout
列数并创建正确大小的正方形。
我已经尝试过的是
- 手动布局/调整 QWidgets 的大小,但这很草率而且很慢
- 设置
QScrollArea::widgetsResized
为 true 可以正确调整宽度,但不能正确调整高度,请参见屏幕截图。
我已经尝试在我的自定义 QWidget 派生类中设置和覆盖,如下所示QSizePolicy
:QWidget::heightForWidth
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
永远不会被调用。
任何帮助,将不胜感激。
编辑:我已经按照这个答案的建议做了,我的自定义小部件在布局中(QGridLayout)。