Изменение цвета фона клеток в Qt
-
25-09-2019 - |
Вопрос
Я новичок в Pyqt, и я все еще сталкиваюсь с новичками: D
У меня есть qtablewidget, который является элементом, делегированным на контроле QChoice (надеюсь, что я сказал это правильно), мне нужно иметь изменения цвета фона клеток, когда пользователь меняет выбор выбора выбора
Кратко: как изменить цвет фона клеток в настольный виджет ??
Я использую PYQT4 и Python 2.6
спасибо заранее
Решение
Использовать
QTableWidgetItem QTableWidget.item(row, column)
а также
QTableWidgetItem setData(role, data)
с участием
Qt.BackgroundRole
следующим образом:
table.item(0, 0).setData(Qt.BackgroundRole, color).
И прочитайте о механизме ролей, используемым в модели Qt / View.
Другие советы
Я использовал что-то вроде этого:
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
item.setBackground(brush)
Где товар является объектом QtableWidgetEtem
Если вы используете 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);
Эй, вы установили метод делегата для виджета таблицы. в событии краски делегата вы обрабатываете технику изменений цвета .. посмотрите на это примерЗдесь они сделали пользовательский цвет выбора. так же, как вы обрабатываете элемент ячейки