我在一个窗口中有一个QGridLayout
实例,我动态地添加了一系列小部件,具体取决于在另一个QListView
实例上检查的值。
对于列表中的每个已检查项目,我在布局的一行上添加一个滑块和两个标签(用于值和名称),位置为0,1,2。
for index in range(self.model.rowCount()):
if self.model.item(index).checkState():
slid = QSlider(Qt.Horizontal)
sl_val_lbl = QLabel("--")
sl_val_lbl.setMaximumWidth(150) #(a)
#sl_val_lbl.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding) #(b)
sl_name_lbl = QLabel(self.model.item(index).text())
#sl_name_lbl.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
self.sliders.addWidget(slid,index,0)
slid.setMaximumWidth(200)
self.sliders.addWidget(sl_val_lbl,index,1)
self.sliders.addWidget(sl_name_lbl,index,2)
self.sliders_dict[sl_name_lbl.text()] = (slid,sl_val_lbl,sl_name_lbl)
现在,我遇到的问题是标签中的一些values
实际上是非常长的字符串。
我的第一个解决方案是(a),即为标签设置一定的大小。当然,根据要渲染的文本的实际大小,这可能会也可能不会起作用,并且当所述文本只有很少的字符时,就像浮点数一样,这不是一个非常干净的解决方案。
然后我继续尝试(b),即将Qlabel
的扩展政策设置为Expanding
。这适用于标签本身,但它与布局(第2列)中的下一个Qlabel
重叠,覆盖其值。
换句话说,我期望底层布局结构可以使用包含的窗口小部件进行扩展,但这种情况并没有发生。
如何获得让布局中的列大小跟随/适应所包含小部件的列所需的效果?