#include "dbmysql.h"
#include "ui_dbmysql.h"
#include "qpushbutton.h"
#include<QMessageBox>
#include<QCloseEvent>
DBMysql::DBMysql(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::DBMysql)
{
ui->setupUi(this);
this->setWindowIcon(QIcon("logo.png"));
//m_tablewidget = new QTabWidget(this);
//m_tablewidget->setParent(this);
//QPushButton
mydb= new OperateDB();
mytimer = new QTimer();
monthtimer = new QTimer();
connect(mytimer, SIGNAL(timeout()), this, SLOT(update()));
connect(monthtimer, SIGNAL(timeout()), this, SLOT(upmonth()));
monthtimer->start(50000);
dbok =opendb();
mytimer->start(999);
QStandardItemModel *model = new QStandardItemModel(ui->treeView);//创建模型指定父类
ui->treeView->setModel(model);
model->setHorizontalHeaderLabels(QStringList() << "报表"); // 设置表头
model->setItem(0,0,new QStandardItem("历史数据"));
// 利用QFont设置字体加粗
//QFont fontBold;
//fontBold.setBold(true);
//model->item(0,0)->setFont(fontBold);//加租
model->item(0,0)->setChild(0,0,new QStandardItem("进线报表"));
model->item(0,0)->setChild(1,0,new QStandardItem("出线报表"));
model->setItem(1,0,new QStandardItem("月报表"));
model->item(1,0)->setChild(0,0,new QStandardItem("进线月报表"));
ui->treeView->setAlternatingRowColors(true);
// 设置不可编辑
ui->treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
// 设置默认展开状态
ui->treeView->expandAll();
connect(ui->treeView,SIGNAL(pressed(QModelIndex)),this,SLOT(soltclicked(QModelIndex)));
connect(ui->action, &QAction::triggered, this, &DBMysql::saveByuser); //菜单关联槽函数
connect(ui->action_6, &QAction::triggered, this, &DBMysql::cleardata); //菜单关联槽函数
connect(ui->action_3, &QAction::triggered, this, &DBMysql::SaveCSV); //菜单关联槽函数
connect(ui->action_4, &QAction::triggered, this, &DBMysql::createtable); //菜单关联槽函数
connect(ui->action_2, &QAction::triggered, this, &DBMysql::About); //菜单关联槽函数
connect(ui->action_5, &QAction::triggered, this, &DBMysql::About); //菜单关联槽函数
QObject::connect(this,&DBMysql::MySignal,this,&DBMysql::monthSlot1);
monthflag=0;
}
DBMysql::~DBMysql()
{
delete ui;
}
void DBMysql::soltclicked(QModelIndex modeIndex)
{
ui->treeView->resizeColumnToContents(modeIndex.row());
QString selectedRowTxt = ui->treeView->model()->itemData(modeIndex).values()[0].toString();
qDebug()<<"result=="<<selectedRowTxt;
ui->dateTimeEdit_S1->setDateTime(QDateTime::currentDateTime().addDays(-3));//设置控件时间
ui->dateTimeEdit_E1->setDateTime(QDateTime::currentDateTime());
ui->dateTimeEdit_S2->setDateTime(QDateTime::currentDateTime().addDays(-3));
ui->dateTimeEdit_E2->setDateTime(QDateTime::currentDateTime());
ui->dateTimeEdit_S3->setDateTime(QDateTime::currentDateTime().addMonths(-3));
ui->dateTimeEdit_E3->setDateTime(QDateTime::currentDateTime());
if (selectedRowTxt=="进线报表")
{
ui->stackedWidget->setCurrentIndex(1);
}
if (selectedRowTxt=="出线报表")
ui->stackedWidget->setCurrentIndex(0);
if (selectedRowTxt=="进线月报表")
ui->stackedWidget->setCurrentIndex(2);
}
bool DBMysql::opendb()
{
bool rest;
rest= mydb->connectDB();
gettxt.GetTxt();
if (!rest)
{
gettxt.SetTxt(mydb->xml.stDBname.databasename);
gettxt.SetTxt("open db fail!");
}
return rest;
}
bool DBMysql::cleardata()
{
mydb->clearDBTable(1);
qDebug()<<"11clear";
}
bool DBMysql::createtable()
{
mydb->createTable();//建表
qDebug()<<"11clear";
}
void DBMysql::upmonth()
{
int mintime= QDateTime::currentDateTime().time().minute();
int hour= QDateTime::currentDateTime().time().hour();
int daytm= QDateTime::currentDateTime().date().day();
if (gettxt.txtlist.count()>0)
{
//从文本文件获取值
for(int i=0;i<mydb->xml._Stopcnamelist.size();i++)
{
if (i>gettxt.txtlist.count()-1) break;
mydb->xml._Stopcnamelist[i].iValue=gettxt.txtlist[i];
}
}
if ((daytm<=10)&& (hour%2==0)&&(monthflag==0)) //测试
// if ((daytm<=10)&& (mintime==59)&&(monthflag==0))// 正常
{
emit MySignal(1);
monthflag=1;
}
if(daytm>10)//超过10号就不会存月数据
{
qDebug()<<"will not save month";
monthflag=0;
}
}
//插入历史数据
void DBMysql::update()
{
QString settr= mydb->xml._Stopcnamelist[0].cyctime;
int secd= QDateTime::currentDateTime().time().second();
int mins= QDateTime::currentDateTime().time().minute();
bool savejop=false;
//qDebug()<<settr;
if (settr.contains("min")>0)
{
qDebug()<<settr;
if (settr.left(2).toInt()>0)
{
if ((secd==0) && (mins%settr.left(2).toInt()==0))
savejop=true;
else
savejop=false;
}
else
{
if (secd==0)
savejop=true;
else
savejop=false;
}
}
else {
//整点
if ((secd==0)&&(mins==0))
savejop=true;
else
savejop=false;
}
if (!savejop) return;
if ((dbok)&&(mydb->xml.stDBname.dbtype.toInt()>0))
{
qDebug()<<mydb->database.databaseName();
int stationid,group,idd;
QString strval,datem,nnote;
datem= QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
int sdbresult=0;
mydb->Operatetransaction();
for(int i=0;i<mydb->xml._Stopcnamelist.size();i++)
{
stationid=0;
group=mydb->xml._Stopcnamelist[i].gRoup.toInt();
idd=mydb->xml._Stopcnamelist[i].iId.toInt();
strval=mydb->xml._Stopcnamelist[i].iValue;
nnote=QString("%1").arg(idd);
sdbresult=sdbresult+ mydb->insertData(stationid,group,idd,strval,datem,nnote);
}
if (sdbresult==0)
mydb->Operatecommit();
else
{
qDebug()<<"error!";
mydb->Operateback();
}
}
else
{
}
}
void DBMysql::on_pushButton_clicked()
{
int selcount= mydb->selectData("realdata",0,0,0,ui->dateTimeEdit_S1->text(),ui->dateTimeEdit_E1->text());
if (selcount<=0) return;
mydb->selectData("realdata",0,1,1,ui->dateTimeEdit_S1->text(),ui->dateTimeEdit_E1->text());
mydb->selectData("realdata",0,2,2,ui->dateTimeEdit_S1->text(),ui->dateTimeEdit_E1->text());
mydb->selectData("realdata",0,3,3,ui->dateTimeEdit_S1->text(),ui->dateTimeEdit_E1->text());
mydb->selectData("realdata",0,4,4,ui->dateTimeEdit_S1->text(),ui->dateTimeEdit_E1->text());
mydb->selectData("realdata",0,5,5,ui->dateTimeEdit_S1->text(),ui->dateTimeEdit_E1->text());
mydb->selectData("realdata",0,6,6,ui->dateTimeEdit_S1->text(),ui->dateTimeEdit_E1->text());
FillTable(2);
}
bool DBMysql::FillTable(int count)
{
model = new QStandardItemModel(); //创建一个标准的条目模型
this->ui->tableView->setModel(model); //将tableview设置成model这个标准条目模型的模板, model设置的内容都将显示在tableview上
model->setHorizontalHeaderItem(0, new QStandardItem("日期") );
model->setHorizontalHeaderItem(1, new QStandardItem("进线柜"));
model->setHorizontalHeaderItem(2, new QStandardItem("电容柜"));
model->setHorizontalHeaderItem(3, new QStandardItem("低压进线�
qt存储数据到mysql 并实现数据展示
需积分: 22 13 浏览量
2022-11-02
16:12:16
上传
评论
收藏 18KB ZIP 举报
MZZ骏马
- 粉丝: 602
- 资源: 32
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0