2014-10-05 168 views
8

我想要制作一个QListWidget,其中每个项目都是一个包含文本和按钮的简单小部件。我使用以下内容:将QWidget添加到QListWidget

itemN = QtGui.QListWidgetItem() 
#Create widget 
widget = QtGui.QWidget() 
widgetText = QtGui.QLabel("I love PyQt!") 
widgetButton = QtGui.QPushButton("Push Me") 
widgetLayout = QtGui.QHBoxLayout() 
widgetLayout.addWidget(widgetText) 
widgetLayout.addWidget(widgetButton) 
widgetLayout.addStretch() 
widget.setLayout(widgetLayout) 
#Add widget to QListWidget funList 
funList.addItem(itemN) 
funList.setItemWidget(itemN, widget) 

问题是,什么也没有显示出来。我得到一个空白的行,我可以用我的键盘导航,但它是空白的。当小工具包含只是一个按钮,它的工作原理,所以它不像只有按钮搞乱了事情。 setItemWidget可以处理的小工具的复杂性是否有限制?也许我需要超越便利课程,正如下面的一些相关帖子中所建议的那样?

相关文章

pyqt adding a widget to a QListWidget
注上一篇文章中也有类似的标题矿,但似乎是来自QtDesigner的代码复杂的仿作(与一些定制的东西混合)相对表现较差的问题。根本不清楚这实际上是这个人应该提出的问题。虽然标题看起来像重复,但问题(我祈祷)不是。

我会说一些类似于this的帖子。

QListWidgetItem with Radio Button

QListView/QListWidget with custom items and custom item widgets

Adding Custom Widget to QListWidget in QT click issue in QT?

pyqt adding a widget to a QListWidget

http://www.qtcentre.org/threads/8660-Drawing-a-widget-in-QItemDelegate-s-paint-method

http://developer.nokia.com/community/discussion/showthread.php/211634-Adding-a-button-inside-QListWidgetItem

回答

12

试试这个:

itemN = QtGui.QListWidgetItem() 
#Create widget 
widget = QtGui.QWidget() 
widgetText = QtGui.QLabel("I love PyQt!") 
widgetButton = QtGui.QPushButton("Push Me") 
widgetLayout = QtGui.QHBoxLayout() 
widgetLayout.addWidget(widgetText) 
widgetLayout.addWidget(widgetButton) 
widgetLayout.addStretch() 

widgetLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) 
widget.setLayout(widgetLayout) 
itemN.setSizeHint(widget.sizeHint())  

#Add widget to QListWidget funList 
funList.addItem(itemN) 
funList.setItemWidget(itemN, widget) 

正如你所看到的,你需要setSizeConstraint的布局和setSizeHint项。

+0

工作!我不清楚发生了什么事。 1)一旦设置了大小约束,我是否真的需要''setSizeHint'这个项目呢?它_seems_遗漏'setSizeHint'不会改变我的GUI的外观。 2)为什么我的大小默认首先默认为-1,-1,以及如何使用“SetFixedSize”修复此问题?为什么不把它修正为错误的值(-1,-1)。任何优秀的文档都会涉及这些问题的解决方案? (文档包括:http://qt-project.org/doc/qt-4.8/qt.html#SizeHint-enum和http://qt-project.org/doc/qt-4.8/qlayout.html#SizeConstraint-枚举) – neuronet 2014-10-05 14:35:08

+2

@neuronet'QLayout :: SetFixedSize'主窗口部件的大小被设置为'sizeHint();'它根本无法调整大小。如果你不设置大小提示,那么你的带有标签和按钮的小部件会比物品大,所以它会非常难看,不正确。 – Chernobyl 2014-10-05 14:43:22

+0

接受答案,因为它解决了问题,但肯定会让任何解释这件事的人都满意,让下一个人超越货物崇拜编程:) – neuronet 2014-10-05 17:28:06