我想知道如何從Qt
上的對象QTableWidget
的標題(水平/垂直)更改背景顏色。如何更改頭部(水平/垂直)QT背景顏色QTableWidget?
我已經知道如何更改所有頭一起使用:
ui->tableWidget->setStyleSheet("QHeaderView::section {background-color:red}");
但我需要單獨更改的項目。很明顯,如果這是可能的。
我想知道如何從Qt
上的對象QTableWidget
的標題(水平/垂直)更改背景顏色。如何更改頭部(水平/垂直)QT背景顏色QTableWidget?
我已經知道如何更改所有頭一起使用:
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
。可能與here類似。
謝謝,它工作正常。 –
是否要爲特定標題部分(例如0,2)設置背景,而不是全部(0,1,2)? – Chernobyl
@Chernobyl正好。 –