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都能运行,这就达到了打包的目的。

相关推荐
众愿19 分钟前
Redis
数据库·redis·缓存
项目題供诗44 分钟前
尚品汇-选中状态缓存变更、删除缓存购物车(三十八)
java·数据库·spring
李大嘟嘟1 小时前
国产化适配——人大金仓V8R6(1)
linux·mysql·kingbase
_.Switch1 小时前
Django 后端架构开发:存储层调优策略解析
数据库·后端·python·中间件·架构·django·sqlite
小光学长1 小时前
基于vue框架的财务室发票管理系统设计与实现946m1(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
数据库
angen20181 小时前
MYSQL 优化
mysql
毕设木哥2 小时前
计算机毕业设计推荐-基于python的网络电视剧收视率分析系统
java·开发语言·数据库·python·django·php·课程设计
阿里云数据库开源2 小时前
安全可靠的国产自研数据库PolarDB V2.0,让数据库开发像“搭积木”一样简单
数据库·阿里云·数据库开发
00100001002 小时前
Rust: Reading and Writing Files
数据库·mysql·rust
北风toto2 小时前
慢sql问题解决,sql优化,数据库(mysql)
数据库·sql·mysql