QT上位机绘制一个表格显示MYSQL数据库(六)

一. QT制作MYSQL表格

database.cpp

复制代码
#include "database.h"
#include "ui_database.h"

#include <QMessageBox>
#include <QDebug>
#include <QSqlError>


database::database(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::database)
{
    ui->setupUi(this);

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("test");
//    db.setHostName("47.116.118.86");
//    db.setPort(3306);
//    db.setDatabaseName("qtsql");
//    db.setUserName("qt");
//    db.setPassword("zhongkeruihe");
    bool ok = db.open();
    if (ok){
       // QMessageBox::information(this, "infor", "success");
         qDebug()<<"success";
    }
    else {
        QMessageBox::information(this, "警告!", "DataBase Open Failed,Check whether there is a database or whether the parameters are correct!!!");
        qDebug()<<"error open database because"<<db.lastError().text();
        ui->label->setText(db.lastError().text());


    }
      //查询所有并放入表中
     SelectAllPushTableData();

     //初始化表格 格式
     ui->tableView->setColumnWidth(0,80);
     ui->tableView->setColumnWidth(1,150);
     ui->tableView->setColumnWidth(2,70);
     ui->tableView->setColumnWidth(3,70);
     ui->tableView->setColumnWidth(4,70);
     ui->tableView->setColumnWidth(5,70);
     ui->tableView->setColumnWidth(6,70);
     ui->tableView->setColumnWidth(7,70);

     /*初始化下拉框*/
     ui->comboBox->addItem("temp");
     ui->comboBox->addItem("humi");
     ui->comboBox->addItem("light");

     ui->comboBox->addItem("soil");
     ui->comboBox->addItem("mq2");
     ui->comboBox->addItem("rain");

     /*设置日期查询的初始化*/
     ui->dateTimeEdit_2->setDateTime(QDateTime::currentDateTime().addSecs(0));
     ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime().addSecs(0));

     setFixedSize(750,650);

     setWindowTitle("------数据库管理平台------");
}


void database::SelectAllPushTableData(){
    tableModel = new QSqlQueryModel;//定义一个数据库模型,指定父对象

    QString strSelectData = "select * from qtdata";
    tableModel->setQuery(strSelectData);

    ui->tableView->setModel(tableModel);
}

void database::UpdataToDataBase(QString Stemp,QString Shumi,QString Slight,QString Ssoil,QString Smq2,QString Srain)
{
    float val[6];

    val[0] = Stemp.toFloat();
    val[1] = Shumi.toFloat();
    val[2] = Slight.toFloat();

    val[3] = Ssoil.toFloat();
    val[4] = Smq2.toFloat();
    val[5] = Srain.toFloat();

   // qDebug()<<val[0]<<" "<<val[1]<<" "<<val[2]<<" "<<val[3]<<" "<<val[4]<<" "<<val[5]<<" "<<" ";

    //插入
    insertData(val);

    //查询并全部显示
    SelectAllPushTableData();

}

//插入数据
bool database::insertData(float val[6])
{
    QSqlQuery query;

    //QDateTime currentTime = QDateTime::currentDateTime();

    QString stInsertData = "insert into qtdata values (?,?,?,?,?,?,?,?)";
    query.prepare(stInsertData);

    query.addBindValue(NULL);

    query.addBindValue(QDateTime::currentDateTime().addSecs(0).toString("yyyy-MM-dd hh:mm:ss"));

    query.addBindValue(val[0]);
    query.addBindValue(val[1]);
    query.addBindValue(val[2]);

    query.addBindValue(val[3]);
    query.addBindValue(val[4]);
    query.addBindValue(val[5]);


    if(!query.exec())
    {
        qDebug()<<query.lastError();
    }
    return true;
}


//清空表
bool database::clearDBTable()
{
    QSqlQuery query;
    QString strClearDB = "delete from qtdata";
    query.prepare(strClearDB);
    if(!query.exec())
    {
        qDebug()<<query.lastError();
    }
    return true;
}


//日期查询
void database::SelectData()
{
    tableModel = new QSqlQueryModel;//定义一个数据库模型,指定父对象

    QString startTime = ui->dateTimeEdit->text();
    QString startTime2 = ui->dateTimeEdit_2->text();

    //查询操作
    QString strSelectData = "select *from qtdata where CurrenTime between '"+startTime+"' and '"+startTime2+"';";
    tableModel->setQuery(strSelectData);
    ui->tableView->setModel(tableModel);
}

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


//退出
void database::on_exit_bt_clicked()
{
    this->close();
}

//查询按钮  ->查询指定日期
void database::on_select_data_bt_clicked()
{
    SelectData();
}

//显示所有
void database::on_displayAll_bt_clicked()
{
    SelectAllPushTableData();
}

//now
void database::on_now_bt_clicked()
{
    //当前时间
    ui->dateTimeEdit_2->setDateTime(QDateTime::currentDateTime().addSecs(0));
}
//最近一天
void database::on_currDay_bt_clicked()
{
    //上一天
    ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime().addSecs(-3600*24));
   //当前时间
   ui->dateTimeEdit_2->setDateTime(QDateTime::currentDateTime().addSecs(0));

   SelectData();
}
//最近三天
void database::on_currThDay_bt_clicked()
{
    //三天前天
   ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime().addSecs(-3600*24*3));
   //当前时间
   ui->dateTimeEdit_2->setDateTime(QDateTime::currentDateTime().addSecs(0));

   SelectData();
}
//最近一周
void database::on_currWeek_bt_clicked()
{
    //七天前
   ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime().addSecs(-3600*24*7));
   //当前时间
   ui->dateTimeEdit_2->setDateTime(QDateTime::currentDateTime().addSecs(0));

   SelectData();
}

//条件查询
void database::on_select_val_bt_clicked()
{
    //获取索引值
    QString strNum = ui->comboBox->currentText();

    //获取上下值
    QString downNum = ui->spinBox->text();
    QString upNum = ui->spinBox_2->text();

    //查询操作
    QString strSelectData = "select *from qtdata where "+strNum+" >= "+downNum+" && "+strNum+"<="+upNum+";";

    tableModel->setQuery(strSelectData);
    ui->tableView->setModel(tableModel);
}

//添加
/*
void database::on_add_bt_clicked()
{
    //插入数据
   // insertData();
    //查询并显示
    SelectAllPushTableData();
}*/
//清空表按钮
void database::on_clear_bt_clicked()
{
    clearDBTable();
    SelectAllPushTableData();
}

database.h

复制代码
#ifndef DATABASE_H
#define DATABASE_H

#include <QWidget>

#include <QSqlQueryModel>
#include <QSqlQuery>

namespace Ui {
class database;
}

class database : public QWidget
{
    Q_OBJECT

public:
    explicit database(QWidget *parent = nullptr);
    ~database();


    //查询所有并放入表中
    void SelectAllPushTableData();
    bool insertData(float val[6]);
    bool clearDBTable();
    void SelectData();

    void UpdataToDataBase(QString Stemp,QString Shumi,QString Slight,QString Ssoil,QString Smq2,QString Srain);
    //table 类
    QSqlQueryModel *tableModel;

private slots:
    void on_exit_bt_clicked();


    void on_select_data_bt_clicked();

    void on_displayAll_bt_clicked();

    void on_now_bt_clicked();

    void on_currDay_bt_clicked();

    void on_currThDay_bt_clicked();

    void on_currWeek_bt_clicked();

    void on_select_val_bt_clicked();

    void on_clear_bt_clicked();

private:
    Ui::database *ui;
};

#endif // DATABASE_H

main.cpp

复制代码
#include "database.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    database w;
    w.show();
    return a.exec();
}

二. 自定义exe图标

图标下载网站

iconfont-阿里巴巴矢量图标库https://www.iconfont.cn/search/index?searchType=icon&q=ico&page=1&fromCollection=-1PNG转换ICO

PNG转ICO - 免费在线将PNG文件转换成ICO (cdkm.com)https://cdkm.com/cn/png-to-ico这个其实很简单,只需要把图标文件xxx.ico放到工程文件的目录(和主文件所在的那个文件夹)中:

然后再打开工程文件QT_MySQL**.pro** ,在最后一行添加语句:RC_ICONS = xxx.ico

比如我这里想把一个名为**app** 的图标文件做exe的图标,就像下图这样在pro文件末尾补加一条:RC_ICONS = app.ico

三. 打包

强调:使用Qt自带的打包工具

1. 编译

release 方式编译整个工程,把release目录下的可执行文件拷贝到一个空文件夹里面(这个文件夹用来为这个exe存放配套的动态库,以便exe能在其他机器上运行,也就是我们所说的打包里面的那个"包")。

2. 选择打包工具

我们根据工程设置的编译工具,选择**Qt 5.12.9 (MinGW 7.3.0 32-bit)**这个命令工具

3. 开始打包

运行Qt 5.12.9 MinGW 7.3.0 32-bit.exe ,切换到上一步把QT_MySQL.exe放到的那个文件夹,命令形式是

cd 文件夹绝对路径

然后使用打包命令:

windeployqt QT_MySQL.exe

这条命令会把Notepad.exe运行时所需要的所有动态库拷贝到这个目录下,也就充实了我们的这个包。

ok,打包完成了,把这个文件夹看成一个整体,拷贝····· 到不同的机器上,我们的QT_MySQL.exe都能运行,这就达到了打包的目的。

相关推荐
一 乐4 小时前
民宿|基于java的民宿推荐系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·源码
鹏码纵横4 小时前
已解决:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 异常的正确解决方法,亲测有效!!!
java·python·mysql
美林数据Tempodata5 小时前
大模型驱动数据分析革新:美林数据智能问数解决方案破局传统 BI 痛点
数据库·人工智能·数据分析·大模型·智能问数
野槐5 小时前
node.js连接mysql写接口(一)
数据库·mysql
Zzzone6836 小时前
PostgreSQL日常维护
数据库·postgresql
chxii6 小时前
1.13使用 Node.js 操作 SQLite
数据库·sqlite·node.js
冰刀画的圈6 小时前
修改Oracle编码
数据库·oracle
这个胖子不太裤6 小时前
Django(自用)
数据库·django·sqlite
麻辣清汤6 小时前
MySQL 索引类型及其必要性与优点
数据库·mysql
2501_915374357 小时前
Neo4j 图数据库安装教程(2024最新版)—— Windows / Linux / macOS 全平台指南
数据库·windows·neo4j