2012-11-16 42 views
8

我很困惑爲什麼QPlainTextEdit小部件在添加到QFormLayout時不會垂直調整大小。在下面的代碼中,文本字段可以水平放大,但不會垂直放大。Qt formlayout垂直不擴展qplaintextedit

任何人都可以解釋這種行爲並提供解決方案嗎?我嘗試了所有我不知道的技巧。

from PyQt4 import QtGui 

class Diag(QtGui.QDialog): 

    def __init__(self, parent, *args, **kwargs): 
     QtGui.QDialog.__init__(self, parent) 
     layout = QtGui.QFormLayout(self) 
     widg = QtGui.QPlainTextEdit(self) 
     layout.addRow('Entry', widg) 

if __name__ == '__main__': #pragma: no cover 
    app = QtGui.QApplication([]) 
    window = Diag(None) 
    window.show() 
    app.exec_() 

此處是QPlainTextEdit插件不是垂直大小調整的示例: QPlainTextEdit added to QFormLayout but not resizing vertically http://s9.postimage.org/ejvmp1wtr/qplaintextedit_in_qformlayout_not_resize.jpg

這是Windows 7中使用的PyQt 4.5.2和Python 32位2.6。

謝謝。

+0

我得到的Linux和WinXP的行爲完全相反。文本編輯垂直調整大小以填補空間,無論是選擇什麼樣的設置(例如,[setFieldGrowthPolicy()](http://doc.qt.nokia.com/4.8-snapshot/qformlayout.html#fieldGrowthPolicy-prop),[ expandingDirections()](http://doc.qt.nokia.com/4.8-snapshot/qlayoutitem.html#expandingDirections)等) – ekhumoro

+0

咦,你用哪個ekhumoro Qt的版本? 我添加了一個例子像我的帖子顯示結果我從我的代碼搞定,只是要確定我明白你說你看到現場不斷擴大,以填補小部件? –

+0

一張圖片勝過千言萬語!看起來我沒有正確理解你的問題。請參閱下面的解決方案。 – ekhumoro

回答

12

看起來,默認情況下,QFormLayout只會根據它們的sizeHint調整其字段的高度。

要改變這種行爲,調整適當的vertical stretch

policy = widg.sizePolicy() 
policy.setVerticalStretch(1) 
widg.setSizePolicy(policy) 
+0

完美!我學到了一個關於sizePolicy的新東西,謝謝。 –