gpt4 book ai didi

c++ - QTreeView 中某些索引的自定义文本颜色

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:25 26 4
gpt4 key购买 nike

我想使用自定义颜色(取决于与每一行相关的数据)在 QTreeView 小部件的其中一列中绘制文本。我试图重载受 drawRow() 保护的方法并像这样更改样式选项参数(精简示例):

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() 函数以返回给定颜色作为 Qt::ForegroundRole 角色。

例如:

virtual QVariant MyModel::data( const QModelIndex &index, int role ) const
{
if ( index.isValid() && role == Qt::ForegroundRole )
{
if ( index.column() == 2 )
{
return QVariant( QColor( Qt::red ) );
}
return QVariant( QColor( Qt::black ) );
}

return QAbstractItemModel::data( index, role );
}

关于c++ - QTreeView 中某些索引的自定义文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1397484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com