Pergunta

Eu tenho um QTableWidget com 5 colunas, como defino todos os itens na coluna 2 como um qProgressBar?

Eu tentei algo como:

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

Onde o downloadDelegate está:

class DownloadDelegate(QItemDelegate):

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

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

Mas a barra de progresso não aparece. Qualquer ideia?

Foi útil?

Solução

Como Marconi disse,

QTableWidget.setCellWidget(row, column, QWidget) 

Adiciona um qwidget na célula em (linha, coluna) e fornece o QTableWidget como pai.

por exemplo, algo nesse sentido:

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)

vai te dar um 1x3 mesa com "foo" em cell 0,0, uma QComboBox dentro cell 0,1 e a QCheckBox dentro cell 0,2.

Outras dicas

O modelo deve retornar itemEditable dentro flags()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top