2011-02-18 468 views
5

我知道你可以遍歷QTableWidgetItems並改變它們的顏色,但是,如果我使用了setCellWidget並且我有不是QTableWidgetItems的單元格。我找不到一個簡單的setRowColor方法。這似乎應該有,因爲有交替行顏色和什麼的方法。有沒有一個簡單的方法來做到這一點,而不需要對錶的委託進行子分類?有沒有簡單的方法來改變QTableWidget中的行的背景顏色?

修辭問題: 我只是想改變行的顏色,我是否真的需要一個全新的類?

回答

3

你可以像這樣的樣式表添加到您的QTableWidget的東西:

QTableWidget::item { 
    background-color: rgb(255, 85, 127); 
} 

您可以設置這是代碼,以及如下:

QString _CustomStyle = QString(
     "QTableWidget::item {" 
     "background-color: rgba(162, 186, 60);" 
     "}"; 
tableWidget->setStyleSheet(_CustomStyle); 

用你自己的顏色RGB(明明) 。

+0

謝謝。但是,我實際上正在設置一個單獨的行的顏色。我相信你的建議會使整個桌子變成彩色。 – Gagege 2011-02-18 22:50:47

+0

我確實最終使用了CSS,因此我會將其標記爲已接受,但只知道我只需要爲單個行着色。非常感謝! – Gagege 2011-07-21 21:16:48

5

我相信,QTableWidget的最簡單的方法設置行的顏色將通過控件項目迭代和使用setData方法來指定背景色,見下文

for (int column=0; column<4; column++) 
{ 
    for (int row = 0; row<5; row++) 
    { 
     QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg((row+1)*(column+1))); 
     newItem->setData(Qt::BackgroundRole, (row%2)>0 ? Qt::red : Qt::blue); 
     ui->tableWidget->setItem(row, column, newItem); 
    } 
} 

一個例子,如果你想更簡單,考慮使用QTableView小部件,實現你的模型(我想最簡單的方法是子類QStandardItemModel)並在那裏保持行顏色。實現setRowColor方法或/和插槽來指定數據行的顏色。

希望這會有所幫助,關心

相關問題