изменение цвета фона ячейки в qt

я новичок в pyqt, и я все еще сталкиваюсь с некоторыми проблемами новичка: D
у меня есть QTableWidget, который является элементом, делегированным элементу управления QChoice (надеюсь, я сказал это правильно), мне нужно, чтобы цвет фона ячейки менялся всякий раз пользователь изменить выбор управления выбором
кратко: как изменить цвет фона ячейки в табличном виджете ??
я использую pyqt4 и python 2.6
заранее спасибо


person Moayyad Yaghi    schedule 10.05.2010    source источник


Ответы (6)


Использовать

QTableWidgetItem QTableWidget.item(row, column)

и

QTableWidgetItem setData(role, data)

с участием

Qt.BackgroundRole

следующее:

table.item(0, 0).setData(Qt.BackgroundRole, color).

И прочитайте о механизме ролей, используемом в Qt Model/View.

person Maxim Popravko    schedule 18.05.2010

Я использовал что-то вроде этого:

brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
item.setBackground(brush)

Где элемент является объектом QTableWidgetItem

person Alexandr Bulanov    schedule 21.04.2012

если вы используете QTableView, используйте это:

model.setData(model.index(0, 0), QVariant(QBrush(Qt::red)), Qt::BackgroundRole);
person Cosmin    schedule 29.08.2013

Вот несколько полезных строк кода. Извините за избыточность, я пытаюсь заработать репутацию.

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);

или просто:

item->setBackground(Qt::green);
person AdvancedNewbie    schedule 16.02.2015

Эй, вы установили метод делегата для виджета таблицы. в событии рисования делегата вы обрабатываете технику изменения цвета.. взгляните на этот пример, здесь они сделали пользовательский выбор цвета. так же, как вы обрабатываете рисование ячейки элемента

person Naruto    schedule 11.05.2010

Для дополнения на С++, если вы хотите нарисовать собственный цвет, в отличие от Qt::red и т. д., вы можете сделать что-то вроде: ui->tableWidget->item(i, j)->setBackground(QColor(152,234,112));

person Wade Wang    schedule 03.06.2021