How is it possible to maintain widgets aspect ratio in Qt and what about centering the widget?
You don't have to implement your own layout manager. You can do with inheriting QWidget
and reimplementing
int QWidget::heightForWidth( int w ) { return w; }
to stay square. However, heightForWidth()
doesn't work on toplevel windows on X11, since apparently the X11 protocol doesn't support that. As for centering, you can pass Qt::AlignCenter
as the third parameter of QBoxLayout::addWidget()
or the fifth parameter of QGridLayout::addWidget()
.
Note: In newer versions of Qt at least, QWidget does not have the heightForWidth
or widthForHeight
anymore (so they cannot be overriden), and therefore setWidthForHeight(true)
or setHeightForWidth(true)
only have an effect for descendants of QGraphicsLayout.