2013-03-25 961 views
0

我最近搬到Qt5,遇到了一個問題,我沒有得到Qt4。QWidget :: setFixedHeight()不工作/仍然可以調整大小

我有一個模式對話框,需要有一個固定的高度,但可調整的寬度。爲了演示這裏是一個精簡版本。

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輸出dialogminimumHeightmaximumHeightsizeHint.height()和電流height就像上面的qDebug()的狹槽。當我調整對話框的大小時,有時候它的當前高度會超過它的最大高度。這怎麼可能?!

回答

0

我發現這個SO post在這個最投票答案我可以看到,在頂級窗口上設置大小策略不起作用。也許如果你在對話框中使用對話框的setLayout()方法並在你的主佈局上使用setFixedHeight(),那麼它就可以工作。

或者,您也可以覆蓋你的對話框的resizeEvent()並禁用所有高度手動更改...

+0

我不是設置sizepolicy,我設置fixedHeight固定高度。看看我的代碼。對不起,但我可能會倒下你的答案。 – 2013-03-25 11:04:22

+0

更新:檢查文檔後,QHBoxLayouts沒有setFixedHeight()方法。要降低你的答案。 編輯:哎呀,看起來像我不能。好吧。 – 2013-03-25 11:15:49

相關問題