Qt QTableView设置各行的背景颜色
来源:互联网 发布:下周主要财经数据 编辑:程序博客网 时间:2024/05/18 03:00
使用QStandardItemModel作为QTableView的model,想要设置各行背景颜色,没有现成的方法,最简单的做法就是自己封装一个model类继承QStandardItemModel,重新实现data方法。
mymodel.h
#ifndef MYMODEL_H#define MYMODEL_H#include <QVariant>#include <QStandardItemModel>class MyModel : public QStandardItemModel{public: MyModel(); QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;};#endif // MYMODEL_H
mymodel..cpp
#include "mymodel.h"#include <QDebug>MyModel::MyModel(){}QVariant MyModel::data(const QModelIndex &index, int role) const{ if (!index.isValid()) return QVariant(); if (role == Qt::TextAlignmentRole) { return int(Qt::AlignLeft | Qt::AlignVCenter); } else if (role == Qt::DisplayRole) { return QStandardItemModel::data(index, role); } else if(role == Qt::BackgroundColorRole ) { if(index.row()%5 == 0) return QColor(Qt::red); else if(index.row()%5 == 1) return QColor(Qt::green); else if(index.row()%5 == 2) return QColor(Qt::blue); else if(index.row()%5 == 3) return QColor(Qt::yellow); else if(index.row()%5 == 4) return QColor(Qt::gray); else return QVariant(); } return QVariant(); return QVariant();}
mainwindow.cpp
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QStandardItemModel>#include <QString>#include "mymodel.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); MyModel *model = new MyModel(); model->setColumnCount(2); model->setHeaderData(0,Qt::Horizontal,tr("货品名称")); model->setHeaderData(1,Qt::Horizontal,tr("货品类型")); ui->tableView->setModel(model); ui->tableView->setColumnWidth(0,100); ui->tableView->setColumnWidth(1,100); for (int i=0;i<1;i++){ if(i%2!=0) { model->setItem(i,0,new QStandardItem("ddd")); model->setItem(i,1,new QStandardItem("哈哈"));// model->data(model->index(i,1),Qt::BackgroundRole);//使用此方法也能改变背景色,但是只能改变某个item无法改变一整行? } else{ model->setItem(i,0,new QStandardItem("ddd")); model->setItem(i,1,new QStandardItem("哈哈")); } }}MainWindow::~MainWindow(){ delete ui;}
实现效果如下图
阅读全文
0 0
- Qt QTableView设置各行的背景颜色
- table各行设置不同背景颜色的js实现
- Qt设置窗体背景颜色
- qt QTableView 的使用(嵌入QCheckobox,为某一单元格设置颜色,单击,双击,右键菜单QMenu)
- 给listview的各行设置不同的颜色
- C# Windows Form中如何设置datagrid的各行颜色.
- Qt 下 QtableView的属性设置
- qt qtableview 样式设置
- qt设置widget的背景颜色和图片
- Qt中设置widget背景颜色/图片的注意事项
- Qt中设置Widget背景颜色及图片的注意事项
- Qt中设置widget背景颜色背景图片的注意事项
- Qt中设置widget背景颜色背景图片的注意事项
- QT中,QTableView鼠标滑过某一item上时该item所在行的背景颜色变成其他颜色的实现方法
- Qt中QPushButton背景颜色设置方法
- QT中设置按钮背景颜色
- QT中设置窗口背景颜色
- QT中设置widget背景颜色
- tensorflow 学习笔记1-最邻近实现(NN)
- 【2017年5月17日】js 事件触发大全
- N!高精度
- android volley
- 小白之路
- Qt QTableView设置各行的背景颜色
- 互联网支付系统整体架构详解
- Java面向对象的六原则法则
- WebGL基础简明教程1-简介
- a标签怎么去下划线以及实现点击前和点击后不变色
- 求两个链表的第一个公共结点各种情况及三种思路分析
- java 可变参数方法不支持多个可变参数以及多种类型的替代方法
- 238. Product of Array Except Self
- Cassandra 3.0 的新特性介绍: 物化视图