我有一个QHBoxLayout,一个接一个地添加小部件。
另一种方法是添加一个自定义小部件,而不是QLabel(重复)。
QHBoxLayout属于QGroupBox。在
但是,我注意到,当布局中添加的小部件很少时,自定义小部件和QLabel之间的间距是“不规则的”。在
我希望qlabel集中在定制小部件之间的间隙中,但是qlabel只会随着添加更多的小部件而接近中心。在
这些截图显示了这两个案例。
所需的案例(仅在布局中有大量小部件时发生),
以及不希望出现的情况(当布局中有小部件时发生)。在
正如您在下面的例子中所看到的,qlabel并不是在定制小部件之间居中的。相反,他们非常向右!在
是什么导致了这种行为??在
我相信QGroupBox有一个居中(水平)对齐方式,QLabel的固定宽度为10(或者对于'->;'QLabel为20)像素(以避免难看的重叠)。在
任何帮助都将不胜感激!
谢谢!在
规格:
python 2.7.1
PyQt4
Windows 7系统
QHBoxLayout的实例化完全正常,与所有示例相似。
这是填充布局的代码。在
for i in range (0,len(Reactants)):
self.WidgetHouse.Reaction_Element_Layout.addWidget(eval('self.OverallContainer_Reactants.Reactant_'+str(i)))
# self.WidgetHouse.Reaction_Element_Layout is the QHBoxLayout
# self.OverallContainer_Reactants.Reactant_'+str(i) is a Custom Widget
if i != (len(Reactants)-1):
tmp = QtGui.QLabel('+')
tmp.setFixedWidth(10)
tmp.setAlignment(QtCore.Qt.AlignCenter)
self.WidgetHouse.Reaction_Element_Layout.addWidget(tmp)
else:
tmp = QtGui.QLabel('->')
tmp.setFixedWidth(20)
tmp.setAlignment(QtCore.Qt.AlignCenter)
self.WidgetHouse.Reaction_Element_Layout.addWidget(tmp)
设置QLabels的固定宽度(tmp.setFixedWidth(10) )是“右锚定”的来源。
但是,不设置固定的宽度会导致布局中的qlabel和自定义小部件专用于相同的空间,从而导致qlabel和自定义小部件重叠。在
与上述代码相同,排除'tmp.setFixedWidt(10) '
我能做些什么来阻止这一切并不可怕?
我能把标签从前面移到后面吗?
(在将所有内容添加到布局后,对所有自定义窗口小部件调用.raise_u()无效)
(或者,我是否需要根据布局中的小部件数量手动计算标签的适当宽度?恶心!)在
进展情况:
我不会更改QLabels的最大/最小(或固定)宽度,但会将它们的对齐方式设置为居中。
相反,我设置了自定义控件的最小宽度。
这修复了明显的“重叠”(实际上不是这样)并使标签看起来“更居中”。在
但是,正如您所看到的,qlabel仍然没有完全居中-太右了。
如果我不在qlabel上设置中心对齐,它们就太左了。在
现在有什么问题??在
(我没有在标签上设置最大宽度)
谢谢大家的帮助!在
下面是一个简单的示例脚本,它是问题中UI的合理近似值,但没有任何布局问题:
所有问题的解决方案:
给自定义控件一个固定的宽度。
产生完全居中的控件,而不是“重叠”控件。
:)
谢谢你们的帮助!在
相关问题 更多 >
编程相关推荐