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

Foi útil?

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

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