欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 使用QSqlQueryModel创建交替背景色的表格模型

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

2025/1/30 15:46:02 来源:https://blog.csdn.net/xulibo5828/article/details/145372469  浏览:    关键词:使用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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com