Qt sqlite多条件查询插入QTableWidget表格(记录备份以防忘记,新手!)
2020-02-17 03:07
423 查看
StatData.h
[code]#pragma once /* 注意: 使用QChartView提升为QChart 添加头文件#include <QChart>, 和添加using namespace QtCharts; 必须声明再#include "ui_MQSoftwareFramework.h"前面, 不然会报错。 */ #include <QDialog> #include <QChartView> #include <QChart> using namespace QtCharts; #include "ui_StatData.h" /* 数据库头文件 */ #include <qsql.h> #include <qsqldatabase.h> #include <qsqlerror.h> #include <qsqlquery.h> #include <qsqldriver.h> #include "database.h" #include <QBarSet> #include <QBarSeries> #include <QValueAxis> class StatData : public QDialog { Q_OBJECT public: StatData(QWidget *parent = Q_NULLPTR); ~StatData(); QString permission; void setTableWidget(QString str); private: qlonglong m_statOKTotal; qlonglong m_statNGTotal; qlonglong m_statTBATotal; private slots: void on_Exitbtn_clicked();//退出按钮 void on_Querybtn_clicked();//查询按钮 private slots: void ModelLoad(); //加载型号 void setTimer(); //时间设置 void iniBarChart(); //曲线图加载 void buildBarChart(); private: Ui::StatData ui; };
StatData.cpp
[code]#include "StatData.h" #include <QMessageBox> #include <qdebug.h> #pragma execution_character_set("utf-8") StatData::StatData(QWidget *parent) : QDialog(parent) { ui.setupUi(this); //去掉问号 Qt::WindowFlags flags = Qt::Dialog; flags |= Qt::WindowCloseButtonHint; setWindowFlags(flags); m_statOKTotal = 0; m_statNGTotal = 0; m_statTBATotal = 0; iniBarChart(); buildBarChart(); ModelLoad(); setTimer(); setTableWidget(permission); } StatData::~StatData() { } /* 加载型号 */ void StatData::ModelLoad() { ui.comboBox->clear(); ui.comboBox->addItem(QStringLiteral("")); QString select_all_sql = "select * from OtherP"; QSqlQuery sql_query;//QSqlQuery类提供执行和操作的SQL语句的方法 //查询所有记录 sql_query.prepare(select_all_sql); if (!sql_query.exec()) { qDebug() << sql_query.lastError();//查询失败 } else { //检索下一个 while (sql_query.next()) { QString id = sql_query.value(0).toString(); double inradiumMin = sql_query.value(1).toDouble(); double inradiumMax = sql_query.value(2).toDouble(); double outerMin = sql_query.value(3).toDouble(); double outerMax = sql_query.value(4).toDouble(); double inradiumMin_Calibration = sql_query.value(5).toDouble(); double inradiumMax_Calibration = sql_query.value(6).toDouble(); double inradiumMin_Correction = sql_query.value(7).toDouble(); double inradiumMax_Correction = sql_query.value(8).toDouble(); double outerMin_Calibration = sql_query.value(9).toDouble(); double outerMax_Correction = sql_query.value(10).toDouble(); ui.comboBox->addItem(id); } } } /* 表格设置 */ void StatData::setTableWidget(QString str) { //根据用户权限来设置表格显示 permission = str; if (str == "管理员") { QStringList headers; headers << ("ID") << ("型号") << ("开始时间") << ("OK数") << ("NG数") << ("TBA数") << ("总数") << ("用户名") << ("结束时间"); qDebug() << str; ui.tableWidget->setColumnCount(9); ui.tableWidget->setHorizontalHeaderLabels(headers); ui.tableWidget->horizontalHeader()->setHidden(false);//设置表头可见 ui.tableWidget->setShowGrid(true); ui.tableWidget->verticalHeader()->setHidden(true); ui.tableWidget->setColumnWidth(0, 65); ui.tableWidget->setColumnWidth(1, 120); ui.tableWidget->setColumnWidth(2, 165); ui.tableWidget->setColumnWidth(3, 45); ui.tableWidget->setColumnWidth(4, 45); ui.tableWidget->setColumnWidth(5, 45); ui.tableWidget->setColumnWidth(6, 55); ui.tableWidget->setColumnWidth(7, 67); ui.tableWidget->setColumnWidth(8, 165); ui.tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置单元格不可编辑 } else { QStringList headers; headers << ("ID") << ("型号") << ("开始时间") << ("OK数") << ("NG数") << ("TBA数") << ("总数")<< ("结束时间"); qDebug() << str; ui.tableWidget->setColumnCount(8); ui.tableWidget->setHorizontalHeaderLabels(headers); ui.tableWidget->horizontalHeader()->setHidden(false);//设置表头可见 ui.tableWidget->setShowGrid(true); ui.tableWidget->verticalHeader()->setHidden(true); ui.tableWidget->setColumnWidth(0, 70); ui.tableWidget->setColumnWidth(1, 142); ui.tableWidget->setColumnWidth(2, 180); ui.tableWidget->setColumnWidth(3, 50); ui.tableWidget->setColumnWidth(4, 50); ui.tableWidget->setColumnWidth(5, 50); ui.tableWidget->setColumnWidth(6, 50); ui.tableWidget->setColumnWidth(7, 180); ui.tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置单元格不可编辑 } } /* 时间设置 */ void StatData::setTimer() { //查询时间条件设置 ui.startTimeEdit->setMinimumDate(QDate::currentDate().addDays(-365));//限制时间在365天 ui.startTimeEdit->setMaximumDate(QDate::currentDate().addDays(365)); ui.startTimeEdit->setDate(QDate::currentDate());//开始时间,获取日期显示 ui.endTimeEdit->setMinimumDate(QDate::currentDate().addDays(-365)); ui.endTimeEdit->setMaximumDate(QDate::currentDate().addDays(365)); ui.endTimeEdit->setDate(QDate::currentDate()); QTime maxTime = ui.endTimeEdit->maximumTime();//结束时间获取最大时间显示 ui.endTimeEdit->setTime(maxTime); } /* 柱状图初始化 */ void StatData::iniBarChart() { QChart *chart = new QChart(); //创建chart chart->setTitle("表面缺陷曲线"); chart->setAnimationOptions(QChart::SeriesAnimations); ui.chartViewBar->setChart(chart); //为ChartView设置chart ui.chartViewBar->setRenderHint(QPainter::Antialiasing); } /* 构造柱状图 */ void StatData::buildBarChart() { QChart *chart = ui.chartViewBar->chart(); //获取ChartView关联的chart chart->removeAllSeries(); //删除所有序列 chart->removeAxis(chart->axisX()); //删除坐标轴 chart->removeAxis(chart->axisY()); //删除坐标轴 //创建七个QBarSet数据集 QBarSet *setOKRate = new QBarSet("良品"); QBarSet *setNgRate = new QBarSet("不良"); QBarSet *setTbaRate = new QBarSet("待定"); setOKRate->append(m_statOKTotal); setNgRate->append(m_statNGTotal); setTbaRate->append(m_statTBATotal); QBarSeries *series = new QBarSeries(); series->append(setOKRate); series->append(setNgRate); series->append(setTbaRate); chart->addSeries(series); //添加柱状图序列 //数值型坐标作为纵轴 QValueAxis *axisY = new QValueAxis; axisY->setRange(0, 100); axisY->setTitleText("比率(%)"); axisY->setTickCount(11);//11 axisY->setLabelFormat("%.0f"); //标签格式 chart->setAxisY(axisY, series); chart->legend()->setVisible(true); //显示图例 chart->legend()->setAlignment(Qt::AlignBottom); //图例显示在下方 } /* 查询数据显示 */ void StatData::on_Querybtn_clicked() { m_statOKTotal = 0; m_statNGTotal = 0; m_statTBATotal = 0; //清空表内容 ui.tableWidget->clearContents(); ui.tableWidget->setRowCount(0); QSqlQuery sql_query; QString startTime = ui.startTimeEdit->text();//获取查询条件开始时间 QString endTime = ui.endTimeEdit->text();//获取查询条件结束时间 QString productCode = ui.comboBox->currentText();//获取型号 QString select_all_sql = "select * from StatisticalResults WHERE detectTime between:detectTime and:endTime and productName = :productCode"; sql_query.prepare(select_all_sql); sql_query.bindValue(":detectTime", startTime); sql_query.bindValue(":endTime", endTime); sql_query.bindValue(":productCode", productCode); if (!sql_query.exec()) { qDebug() << sql_query.lastError(); } else { while (sql_query.next()) { //读取数据库表内容 int setID = sql_query.value(0).toInt(); QString ID = QString::number(setID); QString m_productCode = sql_query.value(1).toString(); QString detectTime = sql_query.value(2).toString(); QString OkTotalNum = sql_query.value(3).toString(); QString NgTotalNum = sql_query.value(4).toString(); QString TbaTotalNum = sql_query.value(5).toString(); QString TotalNum = sql_query.value(6).toString(); QString Permission = sql_query.value(7).toString(); QString EndTime = sql_query.value(8).toString(); //吧数据库表内容插入到DataTable中 int RowCont; RowCont = ui.tableWidget->rowCount(); ui.tableWidget->insertRow(RowCont); ui.tableWidget->setItem(RowCont, 0, new QTableWidgetItem(ID)); ui.tableWidget->setItem(RowCont, 1, new QTableWidgetItem(m_productCode)); ui.tableWidget->setItem(RowCont, 2, new QTableWidgetItem(detectTime)); ui.tableWidget->setItem(RowCont, 3, new QTableWidgetItem(OkTotalNum)); ui.tableWidget->setItem(RowCont, 4, new QTableWidgetItem(NgTotalNum)); ui.tableWidget->setItem(RowCont, 5, new QTableWidgetItem(TbaTotalNum)); ui.tableWidget->setItem(RowCont, 6, new QTableWidgetItem(TotalNum)); if (permission == "管理员")//判断用户权限 { ui.tableWidget->setItem(RowCont, 7, new QTableWidgetItem(Permission)); ui.tableWidget->setItem(RowCont, 8, new QTableWidgetItem(EndTime)); } else { ui.tableWidget->setItem(RowCont, 7, new QTableWidgetItem(EndTime)); } //查询数据出来插入到曲线图中 if (OkTotalNum == "1") { m_statOKTotal += 1; } if (NgTotalNum == "1") { m_statNGTotal += 1; } if (TbaTotalNum == "1") { m_statTBATotal += 1; } } buildBarChart(); } } /* 退出 */ void StatData::on_Exitbtn_clicked() { if ((QMessageBox::information(this, tr("温馨提示!"), tr("您确定退出吗?"), tr("确定"), tr("取消")))) return; this->close(); }
用户查询结果
管理员查询结果
新手!请勿喷。谢谢!
-
20000
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 搭建pyqt5环境
- pyqt深入学习
- windows环境下Qt连接MySql
- QT4.8.7安装详细教程(MinGW 4.8.2和QTCreator4.2.0)
- ubuntu 环境 cross compile 交叉编译 ARM Qt 集成 opencv
- $fhqTreap$
- QT 日志系统的使用
- 转qt 中的timer
- PyQt学习笔记_利用ScrollBar控制图片位置(实现滑动效果)
- 使用Qt调试程序的操作方式
- QT——程序调试
- X210QT移植
- QT定时器报错
- QTableWidget 应用总结
- Qt中字符串之间的转换
- Qt5.7 + OpenCV3.2开启多线程调用系统摄像头并实现视频录制与回放、图片截取与保存(一)本地图片的读取与显示
- Qt5.7 + OpenCV3.2开启多线程调用系统摄像头并实现视频录制与回放、图片截取与保存(二)摄像头画面显示与视频保存
- Qt qml调试,qml性能分析和优化工具
- PyQt中信号的应用(我用于动态同步修改QTableWidget和QLineEdit)
- 初始mqtt服务