私はこの幾何学を作成しようとしています:
_ ___
| | |
|1| 3 |
|_|___|
|_2_|
1つのボックスが高くて細い場合、2つのボックスは短くて幅が広くなります。レイアウトを正しく取得できません。 rowSpanとcolumnSpanを1と2で0から1に変更すると、下のボックスが正しい相対位置に表示されますが、高さが間違っており、ボックス1の幅が間違っています。
これはqqが役に立ちましたが、私の問題を完全には修正しませんでした: 示されているようにQGridLayoutのアイテムを配置する方法は?
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()
各行/列に与えられるスペースの量を変更するには、適切なストレッチファクターを設定する必要があります。
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)
結果: