QWidget :: setFixedHeight()无法正常工作/仍可调整大小

时间:2013-03-25 10:29:22

标签: c++ qt5 qwidget qdialog

我最近搬到了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 maximumHeightsizeHint.height()height的广告位相关联和当前qDebug()一样,就像上面的{{1}}一样。当我调整对话框的大小时,有时它的当前高度超过了它的最大高度。这怎么可能?!

1 个答案:

答案 0 :(得分:0)

我发现这个SO post在这个最投票的答案中我可以读到,在顶级窗口上设置大小政策不起作用。也许如果您使用对话框的setLayout()方法并在对话框的主布局中使用setFixedHeight(),那么它就可以正常工作。

或者,您可以覆盖对话框的resizeEvent()并手动禁用所有高度更改...