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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…