I'm trying to lay out a grid of square custom (subclassed) QWidgets inside a QGridLayout and QScrollArea.
The way I want it to work is choosing the number of QGridLayout
columns and creating squares of the correct sizes.
What I've tried doing already is
- Manually laying out/resizing the QWidgets but this was sloppy and slow
- Setting
QScrollArea::widgetsResized
to true which does resize the width correctly, but not the height, see screenshot.
I've tried setting QSizePolicy
and overriding QWidget::heightForWidth
along with setting QScrollArea::widgetsResized
in my custom QWidget-derived class, like so:
CustomWidget::CustomWidget(...)
{
...
QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Preferred);
policy.setHeightForWidth(true);
setSizePolicy(policy);
}
...
int CustomWidget::heightForWidth(int width) const
{
return width; // square
}
But CustomWidget::heightForWidth
is never called.
Any help would be appreciated.
EDIT: I already did what this answer suggested, my custom widgets are in a layout (QGridLayout).
setFixedSize
on each widget? – Pavel Strakhovheight
as every (variable) width. I tried overridingsizeHints()
but it didn't work for this since I need to return both width and height in that method. – blashyrk