PyQt QGridLayout的列宽不同

时间:2017-12-20 16:10:01

标签: python qt pyqt pyqt4 qgridlayout

我正在尝试创建一个如下所示的布局:

bool
int
int_list
label
label_keyed_string_dict
label_list
license
output
output_list
string
string_dict
string_list
string_list_dict

基本上,我希望单元格编号1的第一行比单元格2更细,但第二行的单元格编号3和4应该具有相等的宽度。

甚至可以在PyQt4中使用QGridLayout创建这样的布局吗?

1 个答案:

答案 0 :(得分:5)

QGridLayout的任务是创建这种类型的结构,为此必须使用该函数:

  

void QGridLayout :: addWidget(QWidget * widget,int fromRow,int   fromColumn,int rowSpan,int columnSpan,Qt :: Alignment alignment = 0)

     

这是一个重载功能。

     

此版本将给定的窗口小部件添加到单元格网格中,跨越多个   行/列。单元格将从fromRow,fromColumn spanning开始   rowSpan rows和columnSpan列。小部件将具有给定的   对准。

     

如果rowSpan和/或columnSpan为-1,则窗口小部件将扩展为   分别是底部和/或右边缘。

示例:

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_())

enter image description here

相关问题