2015-10-18 21 views
6

:1箱2箱が短いと広い、背が高く、痩せているQT GridLayoutにまたがる複数の列

_ ___ 
| | | 
|1| 3 | 
|_|___| 
    |_2_| 

。私はかなり正しいレイアウトを得ることができません。 rowSpanとcolumnSpanを1と2の間に0から1まで詰め込むと、下のボックスが正しい相対位置に表示されますが、高さは間違っており、ボックス1の幅は間違っています。

これには、QQは助けたが、完全に私の問題を解決しませんでした:How to arrange the items in QGridLayout as shown?

import sys 
from PyQt4 import QtGui 
class Example(QtGui.QWidget): 
    def __init__(self): 
     super(Example, self).__init__() 
     self.initUI() 

    def initUI(self): 
     textEdit1 = QtGui.QTextEdit("LHS rectangle")  
     textEdit2 = QtGui.QTextEdit("Bottom rectangle")  
     textEdit3 = QtGui.QTextEdit("Central square")  
     self.gridLayout = QtGui.QGridLayout() 
     self.gridLayout.addWidget(textEdit1, 0, 0, 2, 0) 
     self.gridLayout.addWidget(textEdit2, 2, 1, 0, 2) 
     self.gridLayout.addWidget(textEdit3, 0, 1, 2, 2) 
     self.setLayout(self.gridLayout) 
     self.show() 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 
+0

は0を交換してみてくださいcol span( 'textEdit1,0,0,2,1') – Mel

+0

@tmoreau私のマシンでは、textEdit3の下ではなくtextEdit3の上に少量のtextEdit2ウィジェットを追加します。 –

答えて

6

あなたはそれぞれの行/列に与えられたスペースの量を変更するために、適切な伸長因子を設定する必要があります。

self.gridLayout.addWidget(textEdit1, 0, 0) 
    self.gridLayout.addWidget(textEdit2, 1, 1) 
    self.gridLayout.addWidget(textEdit3, 0, 1) 
    self.gridLayout.setColumnStretch(0, 1) 
    self.gridLayout.setColumnStretch(1, 3) 
    self.gridLayout.setRowStretch(0, 3) 
    self.gridLayout.setRowStretch(1, 1) 

結果:

screenshot

関連する問題