《自定义QTreeView表项颜色、字体、背景色、对齐方式》:系列教程之六

本文属于《QTreeView使用系列教程》之一,欢迎查看其它文章。

在自定义model中修改表项item的文本颜色、字体、背景色以及对齐方式。

1、TreeModel中data函数修改

首先在自定义model类TreeModel中,data()中添加处理font、color、Background、TextAlignment4个role处理逻辑。

QVariant TreeModel::data(const QModelIndex &index, int role) const
{
    if (!index.isValid())
        return QVariant();

    TreeItem *item = itemFromIndex(index);
    if (role == Qt::DisplayRole)
    {
        return item->data(index.column());
    }
    else if (role == Qt::FontRole)
    {
        return item->getFont(index.column());
    }
    else if (role == Qt::TextColorRole) {
        return item->getColor(index.column());
    }
    else if (role == Qt::BackgroundRole) {
        return item->getBackground(index.column());
    }
    else if (role == Qt::TextAlignmentRole) {
        return item->getTextAlign(index.column());
    }
    return QVariant();
}

2、TreeItem中添加4个获取函数

QVariant TreeItem::getFont(int column)
{
    if (column == COLUMN_NAME)
    {
        QFont f;
        f.setBold(true);
        return f;
    }
    return QVariant();
}

QVariant TreeItem::getColor(int column)
{
    if (column == COLUMN_PHONE)
    {
        return QColor(Qt::red);
    }
    return QVariant();
}

QVariant TreeItem::getBackground(int column)
{
    if (row() % 2 == 0) // 偶数行
    {
        return QColor(Qt::lightGray);
    }
    return QVariant();
}

QVariant TreeItem::getTextAlign(int column)
{
    if (column == COLUMN_SEX)
    {
        return QVariant(Qt::AlignCenter);
    }
    else if (column == COLUMN_AGE) {
        return QVariant(Qt::AlignVCenter | Qt::AlignRight);
    }
    return QVariant();
}

getFont():仅"名称"列文本字体为粗体,其余列默认;

getColor():仅"电话"列文字颜色为红色,其余列默认;

getBackground():偶数行背景色为"lightGray",奇数行默认;

getTextAlign():"性别"列文本居中,"年龄"列文本居右,其余列默认。

效果:
在这里插入图片描述



若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

本文涉及工程代码,公众号回复:34ItemFontColor,即可下载。

在这里插入图片描述

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值