Delegado de item personalizado PYQT para QTableWidget
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?
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