我正在动态地将QToolButtons添加到继承自QToolBar的工具栏中。我有一个元组列表(小部件,回调),其中包含应添加到工具栏的内容。理论上,我想通过请求对象对它们进行分组,并使用addSeparator()分隔这些组。
我的小部件字典由三个小部件元组组成,其中两个由同一个密钥所有。目前,我的所有小部件都是QToolButtons。
我尝试了以下两个'添加'功能及结果说明:
# self.registered_widgets is an OrderedDict:
# key: requesting object string, value: ((widget, callback), ...)
def add_registered_widgets_to_toolbar(self):
print "add_registered_widgets_to_toolbar"
#import pdb;pdb.set_trace()
#self.reg... is an OrderedDict
for key in self.registered_widgets.keys():
widgetList = self.registered_widgets[key]
print key
for widgetTuple in widgetList:
print widgetTuple[0]
print widgetTuple[0].parent()
self.addWidget(widgetTuple[0])
self.addSeparator()
此设置导致第一个小部件永远不会显示。永远。我打印了他们的地址,父母和相关密钥,以确认它们符合我的期望:
所有这些条件都没有效果。
第二次尝试:
def add_registered_widgets_to_toolbar(self):
print "add_registered_widgets_to_toolbar"
#import pdb;pdb.set_trace()
l = self.layout()
for key in self.registered_widgets.keys():
widgetList = self.registered_widgets[key]
print key
for widgetTuple in widgetList:
print widgetTuple[0]
print widgetTuple[0].parent()
l.addWidget(widgetTuple[0]
l.addSeperator()
self.setLayout(l)
这会导致全部 QToolButton图标重叠,最后一个是模式对话框按钮的全宽。 (所有按钮都是使用设置的QSize(24,24)创建的。)
此外,与功能的第一个版本不同,工具栏永远不会正确显示。也许(我猜测)我的工具栏上方的小部件和下面的小部件之间显示了前四到五个像素。当我将鼠标悬停在它上面时,足以显示我的三个非常不同的图标的顶部和最后一个的宽度。
我已经咨询了那些比我自己更了解Python的人,并且没有人有任何想法,即使在程序运行时运行和调试它也是如此。我完全失败了。