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();

setFixedHeight の代わりに setMinimumHeight と setMaximumHeight を使用している場合でも、サイズを変更できます。

上記の例では、qDebug に供給されるすべてのものは等しいことが示されています。最小高と最大高が等しい場合、ダイアログはサイズ変更できません。しかし、ここにある。

ここで、setFixedHeight を使用しないとダイアログのサイズを完全に変更できますが、setFixedHeight を使用すると、ダイアログのサイズを特定のポイントまでしか変更できないことに注意してください。

更新:上記のように、、および currentbuttonを出力するスロットに接続しました。また、ダイアログのサイズを変更すると、現在の高さが最大の高さを超えることがあります。これはどのように可能ですか?dialogminimumHeightmaximumHeightsizeHint.height()heightqDebug()

4

1 に答える 1

0

このSO 投稿を見つけました。この最も投票数の多い回答で、トップレベルのウィンドウにサイズ ポリシーを設定しても機能しないことがわかります。setLayout()ダイアログのメソッドを使用しsetFixedHeight()、ダイアログのメインレイアウトで使用すると、うまくいくでしょう。

または、ダイアログをオーバーライドresizeEvent()して、すべての高さの変更を手動で無効にすることもできます...

于 2013-03-25T11:00:45.757 に答える