我想知道如何更改对象QTableWidget
上的标题(水平/垂直)的背景颜色Qt
。
我已经知道如何一起更改所有标题,使用:
ui->tableWidget->setStyleSheet("QHeaderView::section {background-color:red}");
但我需要单独更改这些项目。显然,如果这是可能的。
我想知道如何更改对象QTableWidget
上的标题(水平/垂直)的背景颜色Qt
。
我已经知道如何一起更改所有标题,使用:
ui->tableWidget->setStyleSheet("QHeaderView::section {background-color:red}");
但我需要单独更改这些项目。显然,如果这是可能的。
至少有两种方法可以解决这个问题。很简单的一个:
只需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
. 可能与此处类似。