5
我想使用自定義顏色(取決於與每行相關的數據)在QTreeView小部件中的某一列中繪製文本。我試圖重載drawRow()保護的方法和改變風格選項參數是這樣的(一個精簡的例子):QTreeView中某些索引的自定義文本顏色
virtual void drawRow(QPainter* p_painter, const QStyleOptionViewItem& option,
const QModelIndex& index) const
{
QStyleOptionViewItem optionCustom = option;
if (index.column() == 2)
{
optionCustom.palette.setColor(QPalette::Text, Qt::red);
}
QTreeView::drawRow(p_painter, optionCustom, index);
}
但很明顯,我失去了一些東西,因爲這似乎並沒有工作(我試着改變顏色角色QPalette::WindowText
)。
謝謝!我不知道'data()'方法也用於項目的外觀。我用一個重寫的paint()方法實現了我想要使用自定義項目委託,但使用'data()'方法更優雅。 –
@VladoKlimovský是的,但也有一些純粹主義者認爲它不應該用於外觀,因爲他們希望分別處理內容和外觀(模型vs委託)。 – neuronet