我最近搬到了Qt5并遇到了一个问题,我没有进入Qt4。
我有一个模态对话框,需要有一个固定的高度,但可以调整宽度。为了演示,这是一个精简版。
QDialog dialog;
QHBoxLayout hLayout;
QLineEdit lineEdit;
QPushButton button("Check Current Height");
hLayout.addWidget(&lineEdit);
hLayout.addWidget(&button);
dialog.setLayout(&hLayout);
dialog.setFixedHeight(dialog.sizeHint().height());
qDebug() << dialog.height()
<< dialog.sizeHint().height()
<< dialog.minimumHeight()
<< dialog.maximumHeight();
dialog.exec();
即使我正在使用setMinimumHeight&amp; setMaximumHeight而不是setFixedHeight它仍然可以调整大小。
在上面的例子中,所有输入qDebug的东西都显示为相等。如果最小和最大高度相等,则对话框不应调整大小。但在这里,它是。
这里值得一提的是,如果没有setFixedHeight,对话框可以完全调整大小,但是使用setFixedHeight,对话框只能调整到某一点。
更新:我已将button
与已输出dialog
minimumHeight
maximumHeight
,sizeHint.height()
,height
的广告位相关联和当前qDebug()
一样,就像上面的{{1}}一样。当我调整对话框的大小时,有时它的当前高度超过了它的最大高度。这怎么可能?!
答案 0 :(得分:0)
我发现这个SO post在这个最投票的答案中我可以读到,在顶级窗口上设置大小政策不起作用。也许如果您使用对话框的setLayout()
方法并在对话框的主布局中使用setFixedHeight()
,那么它就可以正常工作。
或者,您可以覆盖对话框的resizeEvent()
并手动禁用所有高度更改...