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

Qt ModelView显示数据库数据

利用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");  //数据库服务器IPqsdSqlData.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_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic: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.lryc.cn/news/195824.html

相关文章:

  • Vue-3.1缓存组件keep-alive
  • 14.8 Socket 一收一发通信
  • 7天狂揽 1.3w star 的 MetaGPT,他们的目标让软件公司为之一惊
  • 工控网络协议模糊测试:用peach对modbus协议进行模糊测试
  • python+opencv+机器学习车牌识别 计算机竞赛
  • 魔域服务端数据库说明
  • 笔记本无线网卡MAC一直改动
  • 【Tomcat】Apache发布两个新版本Tomcat修复多个Bug
  • Empowering Low-Light Image Enhancer through Customized Learnable Priors 论文阅读笔记
  • LeetCode 2652. 倍数求和【数学,容斥原理】简单
  • ansible-playbook剧本
  • 竞赛选题 深度学习LSTM新冠数据预测
  • 机械设计师应该在工作中培养哪些良好习惯?
  • 小程序新增功能页面
  • LeetCode每日一题——2652. Sum Multiples
  • Python问答题(更新中)
  • 服务器中了locked勒索病毒怎么办,勒索病毒解密,数据恢复
  • 游游的字母串 (环形数组两点之间的位置)
  • Flink的ResourceManager详解(一)
  • Tornado 可以使用 nginx 提供负载均衡
  • Golang 面向对象编程 多态
  • WLAN 无线案例(华为AC控制器配置模板)
  • 精美的早安问候语,暖心祝福,开心每一天
  • 嵌入式养成计划-41----C++ auto--lambda表达式--C++中的数据类型转换--C++标准模板库(STL)--list--C++文件操作
  • 全局事件总线
  • 通讯网关软件026——利用CommGate X2ORACLE-U实现OPC UA数据转入ORACLE
  • RAII与智能指针
  • 易云维智慧工业云平台助力广西国企培育数字产业化平台,打造数字化产业生态
  • 【密码学】第三章、分组密码
  • 宁夏企业过等保选哪家测评机构好?选哪家堡垒机好?