изменение цвета фона ячейки в qt - PullRequest
1 голос
/ 11 мая 2010

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

Ответы [ 5 ]

8 голосов
/ 21 апреля 2012

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

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

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

4 голосов
/ 18 мая 2010

Используйте

QTableWidgetItem QTableWidget.item(row, column)

и

QTableWidgetItem setData(role, data)

с

Qt.BackgroundRole

следующим образом:

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

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

2 голосов
/ 29 августа 2013

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

model.setData(model.index(0, 0), QVariant(QBrush(Qt::red)), Qt::BackgroundRole);
1 голос
/ 16 февраля 2015

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

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);
0 голосов
/ 11 мая 2010

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

...