#include "realtimeform.h" #include "ui_realtimeform.h" #include "QTableView" #include "tablewidget.h" #include "QTextCodec" #include <QSqlDatabase> #include <QSqlError> #include <QDebug> #include <QSqlQuery> #include <QSqlRecord> #include <QProcess> #include <QDesktopServices> #include <mainwindow.h> #include <QUrl> #include <Windows.h> #include "realtimestatistics.h" static QSqlDatabase db; static TableWidget *tableWidget; RealTimeForm::RealTimeForm(QString username,QWidget *parent) : QWidget(parent), username(username), ui(new Ui::RealTimeForm) { ui->setupUi(this); ui->textEdit->viewport()->installEventFilter(this); QStringList header; QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312")); header<<QString::fromLocal8Bit("设备编号")<<QString::fromLocal8Bit("设备类型") <<QString::fromLocal8Bit("监测值")<<QString::fromLocal8Bit("当前状态")<<QString::fromLocal8Bit("操作"); tableWidget = new TableWidget(this); tableWidget->btnText = QString::fromLocal8Bit("历史曲线"); tableWidget->realtimeform = this; tableWidget->set_title(header); tableWidget->set_columnWidth(1,130); tableWidget->set_columnWidth(2,200); tableWidget->set_columnWidth(3,160); tableWidget->set_columnWidth(4,80); tableWidget->set_columnWidth(0,130); QVector<QString> vector; QVector<QVector<QString> > curr_data; db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(MainWindow::ip); db.setDatabaseName("brtyx"); db.setPort(3306); db.setUserName("root"); db.setPassword("123456"); bool ok = db.open(); if(ok){ QSqlQuery query("select * from monitor Order By uploadtime Desc",db); QSqlRecord rec = query.record(); while(query.next()) { vector.clear(); vector.append(query.value("devicecode").toString()); vector.append(query.value("devicetype").toString()); vector.append(query.value("monitor").toString()); vector.append(query.value("status").toString()); vector.append(query.value("devicecode").toString()); curr_data.append(vector); } } tableWidget->curr_page = 0; tableWidget->updata_data(curr_data); ui->datalist->addWidget(tableWidget); QString str = QString::fromLocal8Bit("INSERT INTO operation (username, part, name, operation,operationtime) VALUES ('%1', '%2','%3', '%4','%5')") .arg(username) .arg(QString::fromLocal8Bit("数据管理")) .arg(QString::fromLocal8Bit("数据列表")) .arg(QString::fromLocal8Bit("查看列表")) .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")); // qDebug()<<str; QSqlQuery query1(str); } RealTimeForm::~RealTimeForm() { delete ui; } void RealTimeForm::on_search_clicked() { QVector<QString> vector; QVector<QVector<QString> > curr_data; db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(MainWindow::ip); db.setDatabaseName("brtyx"); db.setPort(3306); db.setUserName("root"); db.setPassword("123456"); bool ok = db.open(); if(ok){ QString str; if(ui->textEdit->toPlainText()==""){ str = "select * from monitor Order By uploadtime Desc"; }else{ str = QString("select * from monitor where devicecode like '%%1%' or devicename like '%%1%' Order By uploadtime Desc").arg(ui->textEdit->toPlainText()); } QSqlQuery query(str); QSqlRecord rec = query.record(); while(query.next()) { vector.clear(); vector.append(query.value("devicecode").toString()); vector.append(query.value("devicetype").toString()); vector.append(query.value("monitor").toString()); vector.append(query.value("status").toString()); vector.append(query.value("devicecode").toString()); curr_data.append(vector); } } tableWidget->updata_data(curr_data); QString str = QString::fromLocal8Bit("INSERT INTO operation (username, part, name, operation,operationtime) VALUES ('%1', '%2','%3', '%4','%5')") .arg(username) .arg(QString::fromLocal8Bit("数据管理")) .arg(QString::fromLocal8Bit("数据列表")) .arg(QString::fromLocal8Bit("查看列表")) .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")); // qDebug()<<str; QSqlQuery query1(str); } void RealTimeForm::check(QString code) { RealTimeStatistics *new_win = new RealTimeStatistics(code,username,this); new_win->setWindowFlags(new_win->windowFlags() |Qt::Dialog); new_win->setWindowTitle(QString::fromLocal8Bit("实时数据")); new_win->show(); } //事件过滤器 bool RealTimeForm::eventFilter(QObject *watched, QEvent *event) { if(watched==ui->textEdit->viewport() && event->type()==QEvent::MouseButtonPress){ ui->textEdit->setFocus(); int pInt = QProcess::execute("taskkill /im osk.exe /f"); QDesktopServices::openUrl(QUrl("osk.exe", QUrl::TolerantMode)); } return QWidget::eventFilter(watched,event); }