如何更改Qt上标题(水平/垂直)QTableWidget的背景颜色?

时间:2015-08-21 18:34:54

标签: c++ qt background background-color qtablewidgetitem

我想知道如何从QTableWidget上的对象Qt更改标题(水平/垂直)的背景颜色。

我已经知道如何使用以下方法一起更改所有标题:

ui->tableWidget->setStyleSheet("QHeaderView::section {background-color:red}");

但我需要单独更改这些项目。显然,如果这是可能的。

1 个答案:

答案 0 :(得分: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。可能与here类似。