0

我最近搬到了 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()heightqDebug()

4

1 回答 1

0

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

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

于 2013-03-25T11:00:45.757 回答