2015-08-21 109 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

謝謝,它工作正常。 –