qtablewidget的pyqt自定义项委托

时间:2010-01-09 07:17:02

标签: python pyqt4

我有一个包含5列的QTableWidget,如何将第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 个答案:

答案 0 :(得分:1)

正如马可尼所说,

QTableWidget.setCellWidget(row, column, QWidget) 

在(行,列)的单元格中添加一个QWidget,并将QTableWidget作为父级。

e.g。这些方面的东西:

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中为cell 0,0表提供“foo”,在QComboBox中为cell 0,1,在QCheckBox中为cell 0,2

答案 1 :(得分:0)

模型必须在itemEditable

中返回flags()