2015-08-21 110 views
0

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

我已经知道如何更改所有头一起使用:

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

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

+0

是否要为特定标题部分(例如0,2)设置背景,而不是全部(0,1,2)? – Chernobyl

+0

@Chernobyl正好。 –

回答

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类似。

+0

谢谢,它工作正常。 –