我正在尝试创建以下布局:
_________
| | |
|1 | 2 |
|__|______|
| 3 | 4 |
|____|____|
基本上,我希望第一行的单元格1比单元格2更窄,但第二行的单元格3和4应具有相等的宽度。
使用PyQt4中的QGridLayout创建这样的布局是否可能?
_________
| | |
|1 | 2 |
|__|______|
| 3 | 4 |
|____|____|
基本上,我希望第一行的单元格1比单元格2更窄,但第二行的单元格3和4应具有相等的宽度。
使用PyQt4中的QGridLayout创建这样的布局是否可能?
QGridLayout的任务是创建这种类型的布局结构,为此您必须使用以下函数:
void QGridLayout::addWidget(QWidget* widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0)
这是一个重载函数。
这个版本将给定的widget添加到单元格网格中,跨越多行/列。该单元格将从fromRow,fromColumn开始跨越rowSpan行和columnSpan列。widget将具有给定的对齐方式。
如果rowSpan和/或columnSpan是-1,则widget将分别延伸到底部和/或右侧边缘。
例如:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
app = QApplication(sys.argv)
w = QWidget()
glay = QGridLayout(w)
glay.addWidget(QLabel("1"), 0, 0)
glay.addWidget(QLabel("2"), 0, 1, 1, 3)
glay.addWidget(QLabel("3"), 1, 0, 1, 2)
glay.addWidget(QLabel("4"), 1, 2, 1, 2)
qsrand(QTime.currentTime().msec())
for label in w.findChildren(QLabel):
color = QColor(qrand() % 256, qrand() % 256, qrand() % 256)
label.setStyleSheet('.QLabel{{background: rgb({}, {}, {});}}'.format(color.red(), color.green(), color.blue()))
w.show()
sys.exit(app.exec_())
label1 = 1
,label2 = 3
,label3 = 2
和label4 = 3
。 - eyllanesc