当前位置: 首页 > news >正文

使用QSqlQueryModel创建交替背景色的表格模型

class UserModel(QSqlQueryModel):def __init__(self):super().__init__()self._query = "SELECT name, age FROM users"self.refresh()def refresh(self):self.setQuery(self._query)# 重新定义data()方法def data(self, index, role):   if role == Qt.BackgroundRole :  # 如果角色是背景色if index.row() % 2 == 0:    # 偶数行return QColor("#a0a0a0")else:return QColor("#f0f0f0")return super().data(index, role)   # 其余角色继承父类的data()方法

        这段代码重新定义模型的data()方法,接收参数 index 和 role。如果 role 的值等于 Qt.BackgroundRole,表示设置背景色。如果 index 的行索引值除以 2 的余数为 0,即偶数行,返回颜色对象 QColor ("#a0a0a0"),否则返回 QColor ("#f0f0f0")。如果 role 不是 Qt.BackgroundRole,就调用父类的 data 方法并返回结果。

        利用这个方法,可以实现一些其他的特制显示,比如,在上面的基础上增加一个功能:判断一个单元格的数字是否大于某一个设定值,如果大于设定值就显示为红色:

class UserModel(QSqlQueryModel):def __init__(self):super().__init__()self._query = "SELECT name, age FROM users"self.refresh()def refresh(self):self.setQuery(self._query)def data(self, index, role):if role == Qt.BackgroundRole :  # 检查是否是背景颜色角色if index.row() % 2 == 0:return QColor("#a0a0a0")else:return QColor("#f0f0f0")elif role == Qt.ForegroundRole:  # 检查是否是文字颜色角色if index.column() == 1:  # 检查是否是 age 列value = self.record(index.row()).value(index.column())  # 获取单元格的值try:# 尝试将值转换为浮点数进行比较if float(value) > 10:return QColor(Qt.red)  # 如果大于设定值,返回红色except (ValueError, TypeError):# 如果值不能转换为浮点数,忽略颜色设置passreturn super().data(index, role)

http://www.lryc.cn/news/529671.html

相关文章:

  • jinfo命令详解
  • 如何在 ACP 中建模复合罐
  • 【Java】微服务找不到问题记录can not find user-service
  • 基于Hutool的Merkle树hash值生成工具
  • Windows系统本地部署deepseek 更改目录
  • 深度学习篇---数据存储类型
  • 可被electron等调用的Qt截图-录屏工具【源码开放】
  • electron 应用开发实践
  • openssl 生成证书 windows导入证书
  • 程序员学英文之At the Airport Customs
  • 字节iOS面试经验分享:HTTP与网络编程
  • 游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)
  • 前端八股CSS:盒模型、CSS权重、+与~选择器、z-index、水平垂直居中、左侧固定,右侧自适应、三栏均分布局
  • Linux网络 | 网络层IP报文解析、认识网段划分与IP地址
  • 服务器虚拟化实战:架构、技术与最佳实践
  • (leetcode 213 打家劫舍ii)
  • [C语言日寄] <stdio.h> 头文件功能介绍
  • 一文读懂 Faiss:开启高维向量高效检索的大门
  • 【二叉搜索树】
  • R语言统计分析——ggplot2绘图5——拟合光滑曲线
  • 疯狂拆单词01
  • 高效学习方法分享
  • 01.双Android容器解决方案
  • 一文大白话讲清楚webpack进阶——9——ModuleFederation实战
  • Mysql意向锁
  • 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
  • AD电路仿真
  • vim 中粘贴内容时提示: -- (insert) VISUAL --
  • Redis_Redission的入门案例、多主案例搭建、分布式锁进行加锁、解锁底层源码解析
  • ZZNUOJ(C/C++)基础练习1021——1030(详解版)