Добавить QWidget в QListWidget

Я пытаюсь сделать 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 добавление виджета в QListWidget
Обратите внимание на предыдущий пост с аналогичным названием, Мое, но, кажется, относительно слабо выражена вопрос о сложной стилизация кода из QtDesigner (смешанной с некоторые пользовательские вещи). Совершенно не ясно, что именно этот вопрос должен был задать человек. Хотя название делает его похожим на дубликат, вопрос (я молюсь) не является.

Я бы сказал что-то подобное о этой пост.

QListWidgetItem с переключателем

QListView / QListWidget с пользовательскими элементами и виджетами пользовательских элементов

добавление пользовательского виджета в QListWidget в QT нажмите вопрос в QT?

pyqt добавление виджета на 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

1 ответов


попробуйте это:

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 к пункту.