Пользовательский делегат pyqt для qtablewidget - PullRequest
1 голос
/ 09 января 2010

У меня есть QTableWidget с 5 столбцами, как мне установить все элементы в столбце 2 как QProgressBar?

Я пробовал что-то вроде:

self.downloads_table = QtGui.QTableWidget(0, 5)
self.downloads_table.setItemDelegateForColumn(2, DownloadDelegate(self))

Где DownloadDelegate:

class DownloadDelegate(QItemDelegate):

  def __init__(self, parent=None):
    super(DownloadDelegate, self).__init__(parent)

  def createEditor(self, parent, option, index):
    return QProgressBar(parent)

Но индикатор выполнения вообще не отображается. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 20 февраля 2012

Как сказал Маркони,

QTableWidget.setCellWidget(row, column, QWidget) 

добавляет QWidget в ячейку в (строка, столбец) и присваивает ему QTableWidget в качестве родителя.

например, что-то вроде этих строк:

table = QTableWidget(1, 3)
item1 = QTableWidgetItem("foo")
comboBox = QComboBox()
checkBox = QCheckBox()
table.setItem(0,0,item1)
table.setCellWidget(0,1,comboBox)
table.setCellWidget(0,2,checkBox)

даст вам таблицу 1x3 с "foo" в cell 0,0, QComboBox в cell 0,1 и QCheckBox в cell 0,2.

0 голосов
/ 19 октября 2010

Модель должна вернуть itemEditable в flags()

...