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

QT提取数据库内容,根据不同字段要求显示不同颜色

1、使用mysql查询数据库内容,并且显示在tabview中,

 					 //插入数据
            QString queryStr = QString("select * from phm_table  limit 5");
            Sqlmodel = new QSqlQueryModel();
            Sqlmodel->setQuery(queryStr);
            qDebug() << "ok";
            ui->tableView->setModel(Sqlmodel);

需求:通过点击 详情进入指定界面。

在这里插入图片描述
实现:右击转到槽。
在这里插入图片描述
在槽函数中添加如下代码:
获取当前的行号和列号,然后调用指定槽函数实现响应的功能。

void MainWindow::on_tableView_clicked(const QModelIndex &index)
{

    if(index.row() == 0&&index.column()==5)qDebug()<<"123";

    if(index.row() == 1&&index.column()==5)qDebug()<<"456";

}

进阶版

按下第一行或者第二行第五列元素,打印对应行的第一列元素

void MainWindow::on_tableView_clicked(const QModelIndex &index)
{

    QModelIndex pindex;
    QString pstr ;
    if(index.row() == 0&&index.column()==5){
        pindex = Sqlmodel->index(0,0);
        pstr = Sqlmodel->data(pindex).toString();
        qDebug()<<"data is: +"<<pstr;
    }
    if(index.row() == 1&&index.column()==5){
        pindex = Sqlmodel->index(1,0);
        pstr = Sqlmodel->data(pindex).toString();
        qDebug()<<"data is: +"<<pstr;
    }

}

在这里插入图片描述

扩展

获取某一行一列的数据


void MainWindow::on_tableView_clicked(const QModelIndex &index)
{
    QModelIndex pindex;
    QString pstr ;
    for(int i=0;i<Sqlmodel->columnCount();i++)
    {
        pindex = Sqlmodel->index(index.row(),i);
        pstr = Sqlmodel->data(pindex).toString();
        qDebug()<<"data is: +"<<pstr;
    }
}

当按下一行时,显示当前行的数据信息。结果展示:
在这里插入图片描述

打印某一行的数据:
在这里插入图片描述
2022.8.30完成指定数据库颜色显示:

遇到贵人了,远程帮我解决难题。

最最最重要的细节核心代码,使用完成颜色改变显示。

#ifndef TABLEITEMDELEGATE_H
#define TABLEITEMDELEGATE_H

#include <QItemDelegate>
#include <QPainter>
#include <QPushButton>

class  TableItemDelegate : public  QItemDelegate
{
    Q_OBJECT
public:
    TableItemDelegate(QObject *parent = 0) : QItemDelegate(parent) { }


    void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index)const
    {
        //画背景
        QString colorBK = "#2564C8";
        //		if (option.state & QStyle::State_Selected)
        //		{
        //            colorBK = "#FFFF00";    //选中状态的背景色 黄色
        //		}
        //        else if (option.state & QStyle::State_MouseOver)
        //        {
        //            colorBK = "#0000FF";    //鼠标移上去的背景色
        //        }
        painter->setPen(Qt::NoPen);
        painter->setBrush(QColor(colorBK));
        painter->drawRect(option.rect);

        //画文字
        QString colorText = "#FFFFFF";
        //        if(index.column() == 2)
        //        {
        //            colorText = "#FF0000";
        //        }
        //        if(index.column() == 3)
        //        {
        //            colorText = "#00FF00";
        //        }

        QString text = index.model()->data(index, Qt::DisplayRole).toString();
        if(text == "报警"){
            colorText = "#FF0000";
            colorBK = "#FFFF00";    //选中状态的背景色 黄色
        }

        else if(text == "预警"){
            colorText = "#0000FF";

        }

        else if(text == "离线"){
            colorText = "#FFFF00";
            colorBK = "#FFFF00";    //选中状态的背景色 黄色
        }

        else if(text == "健康"){
             colorBK = "#FFFF00";    //选中状态的背景色 黄色
             colorText = "#00CD66";
        }

        painter->setPen(colorText);
        painter->setBrush(QBrush(Qt::NoBrush));
        painter->drawText(option.rect, Qt::AlignCenter, text);
    }
};

#endif 

显示部分代码:

    model->setQuery(queryStr);
    Sqlmodel = new QSqlQueryModel();
    Sqlmodel->setQuery(queryStr);
    ui->tableView->setModel(model);
    ui->tableView->setItemDelegate(new TableItemDelegate(this));*

在这里插入图片描述

相关文章:

  • 最简便的工厂模式
  • 【实战项目】高并发内存池(模拟实现mini_tcmalloc)
  • 173.CI/CD(一):gitlab配置,jenkins的安装配置,jenkins实现基础的CI/CD,Sonarqube代码质量检测,Harbor镜像仓库
  • FastAPI 学习之路(二十七)安全校验
  • office32位和64位有什么区别
  • 猿创征文|python求解四位数 青少年编程电子学会python编程等级考试三级真题解析2021年03月
  • 当事人胜诉后,所预交受理费是否应予退还
  • uniapp的拨打电话,下拉和上划
  • 如何确定 RMAN 的多路复用级别
  • Java excel poi 读取已有文件 ,动态插入一列数据
  • Java项目:SSM企业工资管理系统
  • Python基于Django的汽车销售网站
  • 花好月圆时,邀你一起来读诗!
  • 在Slicer中添加点、直线和曲线
  • Win7下安装Docker(虚拟机win7)
  • Angular数据绑定机制
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CentOS6 编译安装 redis-3.2.3
  • Docker 笔记(2):Dockerfile
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • extract-text-webpack-plugin用法
  • iOS 颜色设置看我就够了
  • java多线程
  • node.js
  • springMvc学习笔记(2)
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • Vue.js源码(2):初探List Rendering
  • Web Storage相关
  • 安卓应用性能调试和优化经验分享
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 记一次和乔布斯合作最难忘的经历
  • 近期前端发展计划
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • !!Dom4j 学习笔记
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #include
  • (arch)linux 转换文件编码格式
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (NSDate) 时间 (time )比较
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (分类)KNN算法- 参数调优
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (转)大型网站架构演变和知识体系
  • .Net 高效开发之不可错过的实用工具
  • .NET 中创建支持集合初始化器的类型
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .Net中ListT 泛型转成DataTable、DataSet
  • @Controller和@RestController的区别?
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • [C++] sqlite3_get_table 的使用