我最近搬到了 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 & setMaximumHeight 而不是 setFixedHeight 它仍然可以调整大小。
在上面的例子中,所有输入 qDebug 的东西都被证明是相等的。如果最小和最大高度相等,则对话框不应调整大小。但在这里,它是。
这里值得一提的是,如果没有 setFixedHeight,对话框是完全可调整大小的,但使用 setFixedHeight,对话框只能调整到某个点。
更新:我已经连接button
到一个输出dialog
's minimumHeight
、和 current的插槽maximumHeight
,就像上面一样。当我调整对话框大小时,有时它的当前高度超过了它的最大高度。这怎么可能?!sizeHint.height()
height
qDebug()