Я хотел бы знать, как изменить цвет фона из заголовков (горизонтальный / вертикальный) от объекта QTableWidget
на Qt
,
Я уже знаю, как изменить все заголовки вместе, используя:
ui->tableWidget->setStyleSheet("QHeaderView::section {background-color:red}");
Но мне нужно изменить индивидуально пункты. Очевидно, если это возможно.
Есть как минимум 2 способа решить эту проблему. Очень просто:
Просто используйте setHeaderData()
и установить конкретные цвета для определенных разделов.
QTableView *tview = new QTableView;
QStandardItemModel *md = new QStandardItemModel(4, 4);
for (int row = 0; row < 4; ++row) {
for (int column = 0; column < 4; ++column) {
QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column));
md->setItem(row, column, item);
}
}
tview->setModel(md);
tview->model()->setHeaderData(0,Qt::Horizontal,QBrush(QColor("red")),Qt::BackgroundRole);
tview->show();
Но, к сожалению, это не будет работать на некоторых системах … Qt использует стиль платформы. Например, моя Windows не позволяет изменить цвет заголовка. Так что этот код не работает на моей машине. К счастью, это легко решается изменением глобального стиля. Итак, следующий код работает:
//... same code ...
tview->show();
QApplication::setStyle(QStyleFactory::create("Fusion"));
Если вы не хотите менять стиль, то вы должны создать свой собственный HeaderView
, Возможно, что-то похожее на Вот.