Qt ModelView显示数据库数据

news2024/11/19 8:31:56

利用qt的model view来显示数据表userudps里的数据
在这里插入图片描述
用了一个label 两个combox和一个tableview,实现如下效果:
在这里插入图片描述
我这里用到是mysql数据库,一般配置mysql数据库就两种有驱动或者没驱动,有的话把mysql的bin目录的libmysql.dll复制到qt编译器的bin目录下,没有的话还得装qt的源码,然后编译出mysql的驱动再把mysql的bin目录的libmysql.dll复制到qt编译器的bin目录下。
main.cpp 我这里用了日志显示一些错误信息

#include "widget.h"
#include <QDebug>
#include <QApplication>
#include <QFile>
#include <QTextStream>
#include <QDateTime>

void logMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    // 获取当前时间和日期
    QDateTime currentDateTime = QDateTime::currentDateTime();

    // 打开日志文件(追加模式)
    QFile file("log.txt");
    if (!file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text)) {
        qDebug() << "Failed to open log file.";
        return;
    }

    // 创建文本流,并写入日志信息
    QTextStream stream(&file);
    switch (type) {
    case QtDebugMsg:
        qDebug().noquote() << msg;  // 输出到控制台
        stream << "[" << currentDateTime.toString("yyyy-MM-dd hh:mm:ss") << "] [DEBUG] ";
        break;
    case QtInfoMsg:
        qInfo().noquote() << msg;   // 输出到控制台
        stream << "[" << currentDateTime.toString("yyyy-MM-dd hh:mm:ss") << "] [INFO] ";
        break;
    case QtWarningMsg:
        qWarning().noquote() << msg; // 输出到控制台
        stream << "[" << currentDateTime.toString("yyyy-MM-dd hh:mm:ss") << "] [WARNING] ";
        break;
    case QtCriticalMsg:
        qCritical().noquote() << msg; // 输出到控制台
        stream << "[" << currentDateTime.toString("yyyy-MM-dd hh:mm:ss") << "] [CRITICAL] ";
        break;
    case QtFatalMsg:
        qFatal("%s", msg.toUtf8().constData());
        break;
    default:
        break;
    }
    stream << msg << "\n";

    // 关闭日志文件
    file.close();
}
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qInstallMessageHandler(logMessage);
    Widget w;
    w.show();
    return a.exec();
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    qsqmtableModel=new QSqlQueryModel(this);
    qsqmcomboxModel=new QSqlQueryModel(this);
    qsqmcombox2Model=new QSqlQueryModel(this);


    QSqlDatabase qsdSqlData=QSqlDatabase::addDatabase("QMYSQL");
    qsdSqlData.setHostName("127.0.0.1");  //数据库服务器IP
    qsdSqlData.setUserName("root");    //数据库用户名
    qsdSqlData.setPassword("123456");  //密码
    qsdSqlData.setDatabaseName("test");  //使用哪个数据库
    if (qsdSqlData.open() == false) {
        qDebug()<<"数据库连接失败";
        return;
    }else{
        qDebug()<<"数据库连接成功";
    }
    QString sqlselect="select* from userudps";
    qsqmtableModel->setQuery(sqlselect);
    ui->tableView->setModel(qsqmtableModel);
    sqlselect="select user_send from userudps group by user_send";
    qsqmcomboxModel->setQuery(sqlselect);
    ui->comboBoxrow->setModel(qsqmcomboxModel);
    ui->comboBoxrow->setCurrentIndex(0);

}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_comboBoxrow_currentIndexChanged(const QString &arg1)
{
    QString sql=QString("select user_recv from userudps where user_send='%1'").arg(arg1);
    qsqmcombox2Model->setQuery(sql);
    ui->comboBoxcol->setModel(qsqmcombox2Model);
    ui->comboBoxcol->setCurrentIndex(0);
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSqlQueryModel>
#include <QSqlDatabase>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private slots:
    void on_comboBoxrow_currentIndexChanged(const QString &arg1);

private:
    Ui::Widget *ui;
    QSqlQueryModel* qsqmtableModel=nullptr;
    QSqlQueryModel* qsqmcomboxModel=nullptr;
    QSqlQueryModel* qsqmcombox2Model=nullptr;
};
#endif // WIDGET_H

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1099285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32-IPS彩屏ST7789-Arduino-简单驱动

目的&#xff1a; 使ESP32能够驱动点亮ST7789显示屏 前提条件&#xff1a; ESP32 ST7789 &#xff08;240 x240&#xff0c;IPS&#xff09; 杜邦线 Arduino 过程&#xff1a; 0x00--接线 0x01--驱动&#xff1a; 彩屏驱动库 针对不同的彩屏驱动芯片&#xff0c;常用的 Arduino…

Java中的数组

前言&#xff1a; 本篇博客将为大家介绍Java中的数组的相关知识。 目录 基本介绍 概念相关 数组的使用 数组是引用类型 应用场景 保存数据 作为方法的参数 作为方法的返回值 练习 数组转字符串 数组拷贝 求数组中元素的平均值 查找数组中的指定元素&#xff08;二…

传输线感性耦合和距离的关系

传输线感性耦合和距离的关系 传输线感性耦合是指两条或多条传输线之间由于磁场或电场的相互作用而产生的耦合现象。这种耦合现象对于传输线的信号质量和完整性有很大的影响。其中&#xff0c;传输线之间的距离是一个重要的影响因素。本文将从传输线感性耦合的基本概念入手&…

新年学新语言Go之一

一、前言 搜索相关知识后续内容等上班后再继续&#xff0c;新年新气象&#xff0c;从今天开始学习一下Go语言&#xff0c;第一次听说这门语言还是2016年的时候&#xff0c;然后2018年买了一本书 Go In Action&#xff0c;然后就没有然后了&#xff0c; 转眼这么多年过去了&am…

输入字符串,判断里面有多少个大写字母,多少小写字母,多少数字

public static void main(String[] args) {//输入字符串&#xff0c;判断里面有多少个大写字母&#xff0c;多少小写字母&#xff0c;多少数字countVary("fsdfsD4f4sf&#xffe5;#&#xffe5;%~&*&#xff01;sg9tssfffSFSFS");}public static void countVary(…

【网络】总览(待更新)

网络Ⅰ 零、概述0. 网络协议1. 网络协议分层OSI 七层模型TCP/IP 五层模型 2. 协议报头3. 通信过程 一、应用层1.1 &#x1f517;HTTP 协议1.2 &#x1f517;HTTPS 协议 二、传输层2.1 端口号2.2 netstat - - 查询网络状态2.3 pidof - - 查看服务器的进程 id2.4 &#x1f517;UD…

亚马逊云科技正式发布Amazon DataZone,一项新的数据管理服务

Amazon DataZone现已正式发布。作为一项新的数据管理服务&#xff0c;它能够在组织中对数据生产者和消费者之间产生的数据进行编目、发现、分析、共享和管理。 早在2022年的亚马逊云科技re:Invent上&#xff0c;就预告了Amazon DataZone产品的发布&#xff0c;并在2023年3月对其…

常见场景面试题(二)

typora-copy-images-to: imgs theme: cyanosis 敏感词库的设计&#xff0c;要求增删改查敏感词。敏感词文本匹配&#xff0c;敏感词一万个&#xff0c;文本长度在 20 - 1000 答&#xff1a;使用 trie 树来实现敏感词库的设计&#xff0c;可以利用字符串公共前缀来节约存储空间。…

webrtc gcc算法(1)

老的webrtc gcc算法,大概流程&#xff1a; 这两个拥塞控制算法分别是在发送端和接收端实现的&#xff0c; 接收端的拥塞控制算法所计算出的估计带宽&#xff0c; 会通过RTCP的remb反馈到发送端&#xff0c; 发送端综合两个控制算法的结果得到一个最终的发送码率&#xff0c;并以…

记次好玩的XXX模式

看到很多框架里都用了这种方式

深入了解Java位运算符

1.前言 位运算在我们刷题时候&#xff0c;对于效率和空间都是很大的提升&#xff0c;所以位运算符&#xff0c;对于我们的作用也是不可或缺的。 里面就存在一个很重要的思想就是位图&#xff0c;此次我讲解位运算符的作用主要是为他服务的 位图的原理:通过一个整数模拟&#xf…

Dubbo的整体框架和主要模块

1 整体框架 Dubbo的整体框架如下图所示&#xff1a; 上层依赖下层提供的功能&#xff0c;下层的改变对上层不可见。 2 主要模块 &#xff08;1&#xff09;主要模块如下所示&#xff1a; &#xff08;2&#xff09;各子模块描述如下所示&#xff1a; 3 参考文献 &#xff08…

CN论文编写提示词-示例

建议用GPT-4或者Bing 现在开始你是一位计算机学科的研究员!教授!擅长研究和撰写论文!我需要你协助我一起研究一个课题:《计算机信息技术在智能交通系统中的应用》!你认为这个题目如何!有哪些参考资料!这个题目作为论文题目的话有哪些创新意义和价值! 你扮演计算机信息技…

第六章 应用层 | 计算机网络(谢希仁 第八版)

文章目录 第六章 应用层6.1 域名系统DNS6.1.1 域名系统概述6.1.2 互联网的域名结构6.1.3 域名服务器 6.2 文件传送协议6.2.1 FTP概述6.2.2 FTP的基本工作原理6.2.3 简单文件传送协议TFTP 6.3 远程终端协议TELNET6.4 万维网www6.4.1 万维网概述6.4.2 统一资源定位符URL6.4.3 超文…

VBA技术资料MF70:从单元格文本中取消或删除上标

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

力扣刷题 day46:10-16

1.最大整除子集 给你一个由 无重复 正整数组成的集合 nums &#xff0c;请你找出并返回其中最大的整除子集 answer &#xff0c;子集中每一元素对 (answer[i], answer[j]) 都应当满足&#xff1a; answer[i] % answer[j] 0 &#xff0c;或 answer[j] % answer[i] 0 如果存在…

2.SpringSecurity - 处理器简单说明

文章目录 SpringSecurity 返回json一、登录成功处理器1.1 统一响应类HttpResult1.2 登录成功处理器1.3 配置登录成功处理器1.4 登录 二、登录失败处理器2.1 登录失败处理器2.2 配置登录失败处理器2.3 登录 三、退出成功处理器3.1 退出成功处理器3.2 配置退出成功处理器3.3 退出…

前端需要了解的浏览器缓存知识

文章目录 前言为什么需要缓存&#xff1f;DNS缓存缓存读写顺序缓存位置memory cache&#xff08;浏览器本地缓存&#xff09;disk cache&#xff08;硬盘缓存&#xff09;重点&#xff01;&#xff01;&#xff01; 缓存策略 - 强缓存和协商缓存1&#xff09;强缓存ExpiresCach…

认识测试---什么是测试?

文章目录 测试软件测试的性质测试人员的基本素养什么是需求什么是BUG 开发模型和测试模型软件的生命周期开发模型瀑布模型螺旋模型增加&#xff0c;迭代敏捷开发scrume 测试模型V模型W模型&#xff08;双V模型&#xff09; 测试 一个好的开发者&#xff0c;不仅要懂技术也要懂…

【cpu_entry_area mapping】SCTF2023-sycrop

前言 也算学习到了&#xff0c;这样对 DB_stack 的利用与 pt_regs 很相似。都是利用在用户态切换在内核态时&#xff0c;会保存用户态的上下文信息在内核栈中&#xff0c;所以我们就可以控制部分内核栈中的数据&#xff0c;以此为我们栈迁移做好准备。 程序分析 启动脚本啥的…