я новичок в pyqt, и я все еще сталкиваюсь с некоторыми проблемами новичка: D
у меня есть QTableWidget, который является элементом, делегированным элементу управления QChoice (надеюсь, я сказал это правильно), мне нужно, чтобы цвет фона ячейки менялся всякий раз пользователь изменить выбор управления выбором
кратко: как изменить цвет фона ячейки в табличном виджете ??
я использую pyqt4 и python 2.6
заранее спасибо
изменение цвета фона ячейки в qt
Ответы (6)
Использовать
QTableWidgetItem QTableWidget.item(row, column)
и
QTableWidgetItem setData(role, data)
с участием
Qt.BackgroundRole
следующее:
table.item(0, 0).setData(Qt.BackgroundRole, color).
И прочитайте о механизме ролей, используемом в Qt Model/View.
Я использовал что-то вроде этого:
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
item.setBackground(brush)
Где элемент является объектом QTableWidgetItem
если вы используете QTableView, используйте это:
model.setData(model.index(0, 0), QVariant(QBrush(Qt::red)), Qt::BackgroundRole);
Вот несколько полезных строк кода. Извините за избыточность, я пытаюсь заработать репутацию.
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);
Эй, вы установили метод делегата для виджета таблицы. в событии рисования делегата вы обрабатываете технику изменения цвета.. взгляните на этот пример, здесь они сделали пользовательский выбор цвета. так же, как вы обрабатываете рисование ячейки элемента
Для дополнения на С++, если вы хотите нарисовать собственный цвет, в отличие от Qt::red и т. д., вы можете сделать что-то вроде: ui->tableWidget->item(i, j)->setBackground(QColor(152,234,112));