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

本文主要是介绍《自定义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,即可下载。

在这里插入图片描述

这篇关于《自定义QTreeView表项颜色、字体、背景色、对齐方式》:系列教程之六的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071464

相关文章

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

PyQt6/PySide6中QTreeView类的实现

《PyQt6/PySide6中QTreeView类的实现》QTreeView是PyQt6或PySide6库中用于显示分层数据的控件,本文主要介绍了PyQt6/PySide6中QTreeView类的实现... 目录1. 基本概念2. 创建 QTreeView 实例3. QTreeView 的常用属性和方法属性

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方