2013-10-05 101 views
0

我與QTableView對話使用QSqlTableModelQSortFilterProxyModel,他們正在從SQL數據庫讀取。我想改變我的列的顏色[3,4,5]。 我使用下面的代碼:Qt TableView列和單元格顏色

ui->tableView->model()->setData(
    ui->tableView->model()->index(1,2), 
    QVariant(QBrush(Qt::red)), 
    Qt::BackgroundRole); 

我4天搜索解決方案已經和仍然一無所獲。請告訴我應該怎麼做。無論如何,我只需要一些新的源代碼或其他方式,或者只是編輯我的代碼片段。

回答

0

問題是,代理模式和QSqlTableModel都不會對背景角色做任何事情。所以你設置它,但如果你關心檢查setData返回的結果,你會發現它是錯誤的:你正在做的是一個沒有操作。

想一想:SQL數據庫一般無法將背景顏色等屬性與其他數據一起存儲在給定字段中。同樣,代理模型僅用於對數據進行排序,而不會爲您提供任何額外的存儲空間。

您需要做的是在表格模型和排序/過濾器代理之間插入自定義代理。該代理需要爲您存儲這些擴展屬性。然後它會工作。