Alteração da cor do fundo da célula no QT
-
25-09-2019 - |
Pergunta
Eu sou novo no PYQT e ainda estou enfrentando alguns problemas de novato: D
Eu tenho um qTableWidget que é delegado em um controle Qchoice (espero que eu tenha dito corretamente), preciso fazer com que a cor do fundo da célula mude sempre que um usuário alterar a seleção de controle de escolha
Resumidamente: Como alterar uma cor de fundo da célula em um widget de mesa ??
Eu uso Pyqt4 e Python 2.6
obrigado com antecedência
Solução
Usar
QTableWidgetItem QTableWidget.item(row, column)
e
QTableWidgetItem setData(role, data)
com
Qt.BackgroundRole
do seguinte modo:
table.item(0, 0).setData(Qt.BackgroundRole, color).
E leia sobre o mecanismo de funções usado no modelo/visualização QT.
Outras dicas
Eu usei algo assim:
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
item.setBackground(brush)
Onde o item é o objeto QTableWidgetItem
Se você usar o QTableView, use isto:
model.setData(model.index(0, 0), QVariant(QBrush(Qt::red)), Qt::BackgroundRole);
Aqui estão algumas linhas de código úteis. Desculpe pela redundância, estou tentando ganhar alguma reputação.
QStandardItemModel* model = new QStandardItemModel(numRows, numColumns);
QStringList headers;
headers.append("Date");
model->setHorizontalHeaderLabels(headers);
QStandardItem* item = new QStandardItem(text);
item->setData(Qt::AlignCenter, Qt::TextAlignmentRole);
item->setData(QVariant(QBrush(Qt::green)), Qt::BackgroundRole);
model->setItem(row, column, item);
ou simplesmente:
item->setBackground(Qt::green);
Ei, você define o método delegado para o widget da tabela. No evento de pintura do delegado, você lida com a técnica de mudança de cor .. dê uma olhada nisso exemplo, aqui eles fizeram a cor de seleção personalizada. Da mesma maneira que você lida com a pintura de células de itens