Моя пользовательская модель таблицы основана на QAbstractTableModel
и затем отображается в QTableView
,
Выглядит так:
Я хотел бы изменить цвет текста для определенных заголовков строк, который может быть решен в модели. Можно ли раскрасить определенные заголовки оттуда? Я не мог найти путь до сих пор. Я обнаружил настройку фона / цвета текста для всех заголовков, а не для особых. Цвет должен быть своего рода разметкой для пользователя.
Что вам нужно сделать, это переопределить QAbstractTableModel::headerData()
,
В зависимости от значения раздела (индекс заголовка начинается с нуля) вы можете индивидуально стилизовать элементы заголовка.
Соответствующие значения для переднего плана (= цвет текста) и фона в Qt :: ItemDataRole являются Qt::BackgroundRole
а также Qt::ForegrondRole
Например. как это:
QVariant MyTableModel::headerData(int section, Qt::Orientation orientation, int role) const {
//make all odd horizontal header items black background with white text
//for even ones just keep the default background and make text red
if (orientation == Qt::Horizontal) {
if (role == Qt::ForegroundRole) {
if (section % 2 == 0)
return Qt::red;
else
return Qt::white;
}
else if (role == Qt::BackgroundRole) {
if (section % 2 == 0)
return QVariant();
else
return Qt::black;
}
else if (...) {
...
// handle other roles e.g. Qt::DisplayRole
...
}
else {
//nothing special -> use default values
return QVariant();
}
}
else if (orientation == Qt::Vertical) {
...
// handle the vertical header items
...
}
return QVariant();
}
Других решений пока нет …