2017-02-10 21 views
0

У меня возникли проблемы с получением элементов с пользовательскими виджетами для отображения в виджетах списка. Элементы отображаются пустыми в приведенном ниже примере ...Невозможно получить ListItems с настраиваемыми виджетами для отображения

from PySide2 import QtWidgets 

class ItemWidget(QtWidgets.QWidget): 
    def __init__(self,parent = None): 
    super(ItemWidget, self).__init__(parent) 
    layout = QtWidgets.QHBoxLayout() 
    self.setLayout(layout) 
    self.checkBox = QtWidgets.QCheckBox() 
    self.label = QtWidgets.QLabel('test') 
    layout.addWidget(self.checkBox) 
    layout.addWidget(self.label) 

class ListWidget(QtWidgets.QListWidget): 
    def __init__(self,parent = None): 
     super(ListWidget,self).__init__(parent) 
     self.initUI() 

    def initUI(self): 
     for i in range(10): 
      item = QtWidgets.QListWidgetItem() 
      self.addItem(item) 
      widget = ItemWidget(self) 
      self.setItemWidget(item,widget) 
      self.show() 

lister = ListWidget() 
+0

'item.setSizeHint (widget.sizeHint())'. – ekhumoro

ответ

0

Похоже QListWidget не будет делать то, что вы хотите, так что вам нужно подойти к нему с более низкого уровня.

PySide.QtGui.QListWidget.setItemWidget(item, widget)

Эта функция должна использоваться только для отображения статического контента в месте элемента виджета списка. Если вы хотите отобразить собственный динамический контент или реализовать собственный виджет редактора, вместо этого используйте PySide.QtGui.QListView и подкласс PySide.QtGui.QItemDelegate.