diff --git a/Backup.cpp b/Backup.cpp new file mode 100644 index 0000000..5bbebd8 --- /dev/null +++ b/Backup.cpp @@ -0,0 +1,130 @@ +#include "Backup.h" +#include "ui_Backup.h" +#include +#include + +CBackup::CBackup(QWidget *parent) : + QWidget(parent), + ui(new Ui::CBackup) +{ + ui->setupUi(this); + backup_path = ""; + +} + +CBackup::~CBackup() +{ + delete ui; +} + +void CBackup::on_pushButton_path_clicked() +{ + QString dirpath = QFileDialog::getExistingDirectory(this, QStringLiteral("选择目录"), "./", QFileDialog::ShowDirsOnly); + if(dirpath.isEmpty()) dirpath = QDir::currentPath(); + ui->lineEdit_filepath->setText(dirpath + "/"); + + backup_path = dirpath; +} + + +void CBackup::on_pushButton_confirm_clicked() +{ + + if(ui->lineEdit_filepath->text() == ""){ + QMessageBox::information(this,tr("提示"),tr("请选择导出文件路径!")); + return; + } + backup_path = backup_path + "\\config\\"; + copyDirectory(QCoreApplication::applicationDirPath() + "\\config\\", backup_path); + QFile file(backup_path+"macbackup"); + if (!file.open(QIODevice::ReadWrite)) { + qWarning("Couldn't open file for writing."); + return; + } + QTextStream out(&file); + out << MAC << endl; + file.close(); + QMessageBox::information(this,tr("导出"),tr("导出成功!")); +} + +int CBackup::ExeSqlData(QString& strSql) +{ + QSqlQuery sql_query; + int iRet = -1; + qDebug() << "strSql" << strSql << endl; + if(!sql_query.exec(strSql)) + { + qDebug() << sql_query.lastError(); + } + else + { + while(sql_query.next()) + { + iRet = sql_query.value(0).toInt(); + } + } + return iRet; +} +bool CBackup::copyFile(const QString &sourceFile, const QString &destinationFile) +{ + QFile srcFile(sourceFile); + QFile dstFile(destinationFile); + + if (!srcFile.exists()) { + qDebug() << "Source file does not exist:" << sourceFile; + return false; + } + + if (!srcFile.open(QIODevice::ReadOnly)) { + qDebug() << "Unable to open source file for reading:" << sourceFile; + return false; + } + + if (!dstFile.open(QIODevice::WriteOnly)) { + srcFile.close(); + qDebug() << "Unable to open destination file for writing:" << destinationFile; + return false; + } + + dstFile.write(srcFile.readAll()); + srcFile.close(); + dstFile.close(); + return true; +} +bool CBackup::copyDirectory(const QString &sourceDir, const QString &destinationDir) { + QDir srcDir(sourceDir); + QDir destDir(destinationDir); + + // 如果目标文件夹已存在,则删除它 + if (destDir.exists()) { + destDir.removeRecursively(); + } + + // 创建目标文件夹 + if (!destDir.mkpath(".")) { + qDebug() << "无法创建目标文件夹"; + return false; + } + + // 复制文件 + foreach (const QFileInfo &fileInfo, srcDir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot)) { + QString fileName = fileInfo.fileName(); + QString srcFilePath = srcDir.absoluteFilePath(fileName); + QString destFilePath = destDir.absoluteFilePath(fileName); + + if (fileInfo.isDir()) { + // 递归复制子文件夹 + if (!copyDirectory(srcFilePath, destFilePath)) { + return false; + } + } else { + // 复制文件 + if (!QFile::copy(srcFilePath, destFilePath)) { + qDebug() << "无法复制文件" << srcFilePath << "到" << destFilePath; + return false; + } + } + } + + return true; +} diff --git a/Backup.h b/Backup.h new file mode 100644 index 0000000..9c89957 --- /dev/null +++ b/Backup.h @@ -0,0 +1,36 @@ +#ifndef BACKUP_H +#define BACKUP_H + +#include +#include +#include +#include +#include "global.h" +namespace Ui { +class CBackup; +} + +class CBackup : public QWidget +{ + Q_OBJECT + +public: + explicit CBackup(QWidget *parent = nullptr); + ~CBackup(); + +private slots: + void on_pushButton_path_clicked(); + + void on_pushButton_confirm_clicked(); + +private: + Ui::CBackup *ui; + QString backup_path; + QSqlDatabase database; + int CreateDataBase(); + int ExeSqlData(QString& strSql); + bool copyFile(const QString &sourceFile, const QString &destinationFile); + bool copyDirectory(const QString &sourceDir, const QString &destinationDir); +}; + +#endif // BACKUP_H diff --git a/Backup.ui b/Backup.ui new file mode 100644 index 0000000..d745025 --- /dev/null +++ b/Backup.ui @@ -0,0 +1,150 @@ + + + CBackup + + + + 0 + 0 + 711 + 169 + + + + 配置导出 + + + font: 10pt "黑体"; +color: rgb(27, 30, 35); + + + + + + + + + 请填写导出信息 + + + Qt::AlignCenter + + + + + + + + + + + + + + + + + false + + + + + + + + 96 + 28 + + + + + 96 + 28 + + + + #pushButton_path { border-image: url(:/image/Btn/normal_Btn.png); + color:#1f5188 } +#pushButton_path:hover { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_path:pressed { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_path:checked { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} + + + 导出路径 + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 96 + 28 + + + + + 96 + 28 + + + + #pushButton_confirm { border-image: url(:/image/Btn/normal_Btn.png); + color:#1f5188 } +#pushButton_confirm:hover { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_confirm:pressed { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_confirm:checked { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} + + + 确认 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + diff --git a/BoardSetting.cpp b/BoardSetting.cpp index 95637d7..0fef26b 100644 --- a/BoardSetting.cpp +++ b/BoardSetting.cpp @@ -33,7 +33,13 @@ CBoardSetting::~CBoardSetting() void CBoardSetting::initReadConfig() { - QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitBoardsInfo.json"; +#ifdef Q_OS_WIN32 + QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitBoardsInfo.json"; +#endif +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/UnitBoardsInfo.json"; +#endif + QFile loadFile(name); if(!loadFile.open(QIODevice::ReadOnly)) { @@ -292,7 +298,13 @@ void CBoardSetting::PushData() qDebug() << UnitBoardsInfoObj << endl; QJsonDocument jsonDoc; jsonDoc.setObject(UnitBoardsInfoObj); - QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitBoardsInfo.json"; +#ifdef Q_OS_WIN32 + QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitBoardsInfo.json"; +#endif +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/UnitBoardsInfo.json"; +#endif + QFile file(name); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); @@ -447,7 +459,13 @@ void CBoardSetting::PushData() QJsonDocument jsonDoc2; jsonDoc2.setObject(WorkConditionsInfoObj); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitWorkConditionsInfo.json"; +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitWorkConditionsInfo.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/UnitWorkConditionsInfo.json"; +#endif + QFile file2(fileName); file2.open(QIODevice::WriteOnly); @@ -463,36 +481,51 @@ void CBoardSetting::PushData() g_SqliteDB->DeleteData(strTablename); QString strURL = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitWorkConditionsInfo.json"); - g_FtpClient->SetServerInfo(strURL); - g_FtpClient->SetUserInfo("root","@#cidw!@123456"); - g_FtpClient->UpLoadFile(fileName,"UnitWorkConditionsInfo.json"); - +// g_FtpClient->SetServerInfo(strURL); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(fileName,"UnitWorkConditionsInfo.json"); + g_FtpClient->uploadFile(strURL,fileName,"UnitWorkConditionsInfo.json"); QJsonDocument jsonDocUnit; QJsonObject UnitObj; UnitObj["NULL"] = ""; jsonDocUnit.setObject(UnitObj); - QString fileNameUnit = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; + +#ifdef Q_OS_WIN32 + QString fileNameUnit = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameUnit = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations.json"; +#endif QFile fileUnit(fileNameUnit); fileUnit.open(QIODevice::WriteOnly); fileUnit.write(jsonDocUnit.toJson()); fileUnit.close(); QString str2 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitConfigurations.json"); - g_FtpClient->SetServerInfo(str2); - g_FtpClient->SetUserInfo("root","@#cidw!@123456"); - g_FtpClient->UpLoadFile(fileNameUnit,"UnitConfigurations.json"); +// g_FtpClient->SetServerInfo(str2); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(fileNameUnit,"UnitConfigurations.json"); + + g_FtpClient->uploadFile(str2,fileNameUnit,"UnitConfigurations.json"); +#ifdef Q_OS_WIN32 + QString fileNameUnit2 = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations2.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameUnit2 = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations2.json"; +#endif - QString fileNameUnit2 = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations2.json"; QFile fileUnit2(fileNameUnit2); fileUnit2.open(QIODevice::WriteOnly); fileUnit2.write(jsonDocUnit.toJson()); fileUnit2.close(); QString str22 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitConfigurations2.json"); - g_FtpClient->SetServerInfo(str22); - g_FtpClient->SetUserInfo("root","@#cidw!@123456"); - g_FtpClient->UpLoadFile(fileNameUnit2,"UnitConfigurations2.json"); +// g_FtpClient->SetServerInfo(str22); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(fileNameUnit2,"UnitConfigurations2.json"); + + g_FtpClient->uploadFile(str22,fileNameUnit2,"UnitConfigurations2.json"); g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting"); for (int i = 0; i < g_channelSetting.size(); i++) @@ -520,8 +553,13 @@ void CBoardSetting::PushData() QJsonDocument jsonDocTri; QJsonArray triArray,m_channeltriggerArray; QJsonObject triggerConfigObj; +#ifdef Q_OS_WIN32 + QString fileNameTri = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameTri = QCoreApplication::applicationDirPath() + "/config/TriggerSettings.json"; +#endif - QString fileNameTri = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; for (int ii = 0; ii < g_ChannelBaseInfo.size(); ii++) { @@ -540,25 +578,34 @@ void CBoardSetting::PushData() fileTri.write(jsonDocTri.toJson()); fileTri.close(); QString str1 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("TriggerSettings.json"); - g_FtpClient->SetServerInfo(str1); - g_FtpClient->SetUserInfo("root","@#cidw!@123456"); - g_FtpClient->UpLoadFile(fileNameTri,"TriggerSettings.json"); +// g_FtpClient->SetServerInfo(str1); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(fileNameTri,"TriggerSettings.json"); + g_FtpClient->uploadFile(str1,fileNameTri,"TriggerSettings.json"); + +#ifdef Q_OS_WIN32 + QString fileNameTri2 = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings2.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameTri2 = QCoreApplication::applicationDirPath() + "/config/TriggerSettings2.json"; +#endif - QString fileNameTri2 = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings2.json"; QFile fileTri2(fileNameTri2); fileTri2.open(QIODevice::WriteOnly); fileTri2.write(jsonDocTri.toJson()); fileTri2.close(); QString strTri2 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("TriggerSettings2.json"); - g_FtpClient->SetServerInfo(strTri2); - g_FtpClient->SetUserInfo("root","@#cidw!@123456"); - g_FtpClient->UpLoadFile(fileNameTri2,"TriggerSettings2.json"); +// g_FtpClient->SetServerInfo(strTri2); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(fileNameTri2,"TriggerSettings2.json"); + g_FtpClient->uploadFile(strTri2,fileNameTri2,"TriggerSettings2.json"); QString str = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitBoardsInfo.json"); - g_FtpClient->SetServerInfo(str); - g_FtpClient->SetUserInfo("root","@#cidw!@123456"); - g_FtpClient->UpLoadFile(name,"UnitBoardsInfo.json"); +// g_FtpClient->SetServerInfo(str); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(name,"UnitBoardsInfo.json"); + g_FtpClient->uploadFile(str,name,"UnitBoardsInfo.json"); disconnect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&))); } @@ -736,7 +783,13 @@ void CBoardSetting::on_pushButton_Init_clicked() qDebug() << UnitBoardsInfoObj << endl; QJsonDocument jsonDoc; jsonDoc.setObject(UnitBoardsInfoObj); - QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitBoardsInfo.json"; +#ifdef Q_OS_WIN32 + QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitBoardsInfo.json"; +#endif +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/UnitBoardsInfo.json"; +#endif + QFile file(name); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); @@ -855,7 +908,13 @@ void CBoardSetting::on_pushButton_Init_clicked() QJsonDocument jsonDoc2; jsonDoc2.setObject(WorkConditionsInfoObj); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitWorkConditionsInfo.json"; +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitWorkConditionsInfo.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/UnitWorkConditionsInfo.json"; +#endif + QFile file2(fileName); file2.open(QIODevice::WriteOnly); @@ -879,8 +938,13 @@ void CBoardSetting::on_pushButton_Init_clicked() QJsonObject UnitObj; UnitObj["NULL"] = ""; jsonDocUnit.setObject(UnitObj); - QString fileNameUnit = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; +#ifdef Q_OS_WIN32 + QString fileNameUnit = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameUnit = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations.json"; +#endif QFile fileUnit(fileNameUnit); fileUnit.open(QIODevice::WriteOnly); fileUnit.write(jsonDocUnit.toJson()); @@ -919,8 +983,13 @@ void CBoardSetting::on_pushButton_Init_clicked() QJsonArray triArray,m_channeltriggerArray; QJsonObject triggerConfigObj; - QString fileNameTri = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; +#ifdef Q_OS_WIN32 + QString fileNameTri = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameTri = QCoreApplication::applicationDirPath() + "/config/TriggerSettings.json"; +#endif for (int ii = 0; ii < g_ChannelBaseInfo.size(); ii++) { @@ -947,14 +1016,22 @@ void CBoardSetting::on_pushButton_Init_clicked() // g_FtpClient->SetUserInfo("root","@#cidw!@123456"); // g_FtpClient->UpLoadFile(name,"UnitBoardsInfo.json"); customLogMessageHandler(QtDebugMsg,"初始化机组板卡配置信息推送完成!"); +<<<<<<< HEAD +======= +#ifndef NO_FILTER +>>>>>>> font QJsonObject sendData; sendData["cmd"] = "111"; QNetworkRequest req; QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP); req.setUrl(sUrl); g_NetMgr->PostJson(req,sendData); +<<<<<<< HEAD +======= +#endif +>>>>>>> font putJson(); } @@ -1065,7 +1142,13 @@ void CBoardSetting::putJson() } QJsonDocument jsonDoc; jsonDoc.setArray(channelArray); - QString name = QCoreApplication::applicationDirPath() + "\\config\\ChannelSettings.json"; + +#ifdef Q_OS_WIN32 + QString name = QCoreApplication::applicationDirPath() + "\\config\\ChannelSettings.json"; +#endif +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/ChannelSettings.json"; +#endif QFile file(name); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); diff --git a/ChannelList.cpp b/ChannelList.cpp index 164326a..3402dfb 100644 --- a/ChannelList.cpp +++ b/ChannelList.cpp @@ -65,12 +65,8 @@ CChannelList::CChannelList(QWidget *parent) : ui->tableView->setColumnWidth(33, 256); m_nCurRow = -1; - SlowSpeeddialog = new CSlowSpeedChannelSetting(); - connect(SlowSpeeddialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting))); - ChannelSettingdialog = new CChannelSetting(); - connect(ChannelSettingdialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting))); - SlowSpeeddialog = new CSlowSpeedChannelSetting(); - connect(SlowSpeeddialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting))); + ui->comboBox_operate->addItem("通道"); + ui->comboBox_operate->addItem("带通滤波"); ui->comboBox_operate->addItem("带通滤波"); @@ -83,6 +79,12 @@ CChannelList::CChannelList(QWidget *parent) : #ifdef QT_DEBUG initReadConfig(); #endif +<<<<<<< HEAD +======= +#ifdef NO_FILTER + initReadConfig(); +#endif +>>>>>>> font } @@ -178,6 +180,10 @@ void CChannelList::iniConnect() connect(model, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(itemChangedSlot(QStandardItem*))); connect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&))); +<<<<<<< HEAD +======= +#ifndef NO_FILTER +>>>>>>> font QJsonObject sendData; sendData["cmd"] = "97"; QJsonArray chan_list; @@ -190,6 +196,10 @@ void CChannelList::iniConnect() QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP); req.setUrl(sUrl); g_NetMgr->PostJson(req,sendData); +<<<<<<< HEAD +======= +#endif +>>>>>>> font } void CChannelList::createItem(QStringList filename) @@ -267,9 +277,13 @@ void CChannelList::itemChangedSlot(QStandardItem *item) myHeader->onStateChanged(state); } } - +void CChannelList::slotChannelSettingClose() +{ + on_pushButton_refresh_clicked(); +} void CChannelList::slotSetChannelData(ChannelSetting channelSetting) { + qDebug() << "slotSetChannelData" << endl; int i; for (i = 0;i UpdateDataSql(tableName,strUpdateSql); g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting"); + putJson(); //disconnect(ChannelSettingdialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting))); @@ -477,7 +492,13 @@ void CChannelList::putJson() } QJsonDocument jsonDoc; jsonDoc.setArray(channelArray); - QString name = QCoreApplication::applicationDirPath() + "\\config\\ChannelSettings.json"; + +#ifdef Q_OS_WIN32 + QString name = QCoreApplication::applicationDirPath() + "\\config\\ChannelSettings.json"; +#endif +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/ChannelSettings.json"; +#endif QFile file(name); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); @@ -540,20 +561,26 @@ void CChannelList::slotRowDoubleClicked(const QModelIndex &index) if(g_channelSetting[m_nCurRow].boardType.toInt() == 1 && g_channelSetting[i].channelId == g_channelSetting[m_nCurRow].channelId){//开入开出板卡 - SlowSpeeddialog->channelSetting = g_channelSetting[i]; - SlowSpeeddialog->setWindowModality(Qt::ApplicationModal); - SlowSpeeddialog->displayChannelSetting(); - SlowSpeeddialog->show(); + SlowSpeeddialog = new CSlowSpeedChannelSetting(); + connect(SlowSpeeddialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting))); + SlowSpeeddialog->channelSetting = g_channelSetting[i]; + SlowSpeeddialog->setWindowModality(Qt::ApplicationModal); + SlowSpeeddialog->displayChannelSetting(); + SlowSpeeddialog->show(); } else if(g_channelSetting[m_nCurRow].boardType.toInt() > 1 && g_channelSetting[m_nCurRow].boardType.toInt() < 5 && g_channelSetting[i].channelId == g_channelSetting[m_nCurRow].channelId){//高速板卡 qDebug() << g_channelSetting[m_nCurRow].boardType << g_channelSetting[i].channelId << g_channelSetting[m_nCurRow].channelId<< endl; - + ChannelSettingdialog = new CChannelSetting(); + connect(ChannelSettingdialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting))); + connect(ChannelSettingdialog, SIGNAL(ChannelSettingClose_sg()), this, SLOT(slotChannelSettingClose())); ChannelSettingdialog->channelSetting = g_channelSetting[i]; ChannelSettingdialog->setWindowModality(Qt::ApplicationModal); ChannelSettingdialog->displayChannelSetting(); ChannelSettingdialog->show(); }else if((g_channelSetting[m_nCurRow].boardType.toInt() == 5) && g_channelSetting[i].channelId == g_channelSetting[m_nCurRow].channelId){//低速板卡 + SlowSpeeddialog = new CSlowSpeedChannelSetting(); + connect(SlowSpeeddialog, SIGNAL(sgSetChannelData(ChannelSetting)), this, SLOT(slotSetChannelData(ChannelSetting))); SlowSpeeddialog->channelSetting = g_channelSetting[i]; SlowSpeeddialog->setWindowModality(Qt::ApplicationModal); SlowSpeeddialog->displayChannelSetting(); @@ -632,7 +659,12 @@ void CChannelList::on_pushButton_open_clicked() } } putJson(); +<<<<<<< HEAD }else if(ui->comboBox_operate->currentText() == "带通滤波"){ +======= + }else if(ui->comboBox_operate->currentText() == "带通滤波") + { +>>>>>>> font QJsonArray channleList; for (int i = 0; i < model->rowCount(); i++) { QModelIndex indexCheck = model->index(i,0); @@ -696,6 +728,10 @@ void CChannelList::on_pushButton_refresh_clicked() model->removeRows(0, model->rowCount()); g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting"); connect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&))); +<<<<<<< HEAD +======= +#ifndef NO_FILTER +>>>>>>> font QJsonObject sendData; sendData["cmd"] = "97"; QJsonArray chan_list; @@ -707,6 +743,15 @@ void CChannelList::on_pushButton_refresh_clicked() QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP); req.setUrl(sUrl); g_NetMgr->PostJson(req,sendData); +<<<<<<< HEAD +======= +#else + initReadConfig(); +#endif +#ifdef QT_DEBUG + initReadConfig(); +#endif +>>>>>>> font } void CChannelList::slotNetMgr(QString sAddr, const QVariant &msg) @@ -734,7 +779,13 @@ void CChannelList::slotNetMgr(QString sAddr, const QVariant &msg) } } } +<<<<<<< HEAD initReadConfig(); +======= +#ifndef NO_FILTER + initReadConfig(); +#endif +>>>>>>> font } } disconnect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&))); diff --git a/ChannelList.h b/ChannelList.h index 39dec03..0dce5ae 100644 --- a/ChannelList.h +++ b/ChannelList.h @@ -4,7 +4,7 @@ #include #include //数据模型类 #include -#include "HeaderView.h" +#include "headerView.h" #include "TableHeaderView.h" #include "global.h" #include "ftpclient.h" @@ -29,6 +29,7 @@ public slots: void on_columnSectionClicked(int column, bool checked); void slotSetChannelData(ChannelSetting channelSetting); + void slotChannelSettingClose(); private: Ui::CChannelList *ui; QStandardItemModel *m_pModel; //数据模型对象指针 diff --git a/ChannelSetting.cpp b/ChannelSetting.cpp index 1b02df1..2d76d7b 100644 --- a/ChannelSetting.cpp +++ b/ChannelSetting.cpp @@ -56,7 +56,7 @@ CChannelSetting::CChannelSetting(QWidget *parent) : QStringList strSensorList; - strSensorList << "电涡流传感器" << "低频位移" << "IEPE型传感器" ; + strSensorList << "电涡流传感器" << "低频位移" << "IEPE型传感器" << "速度型传感器" ; ui->comboBox_sensorType->addItems(strSensorList); QStringList ChannelTypeList; ChannelTypeList << "转速" << "径向振动位移" << "轴向位移" << "加速度" << "速度" << "动态电压"; @@ -85,10 +85,14 @@ CChannelSetting::CChannelSetting(QWidget *parent) : ui->comboBox_tachAutoTach->addItems(m_itemList); ui->comboBox_samplingRate_2->addItems(strListFs); ui->comboBox_sensorRangeCheck_2->addItems(m_itemList); + setAttribute(Qt::WA_DeleteOnClose);//使能析构函数调用 + } CChannelSetting::~CChannelSetting() { + qDebug() << "~CChannelSetting" << endl; + emit ChannelSettingClose_sg(); delete ui; } @@ -603,6 +607,7 @@ void CChannelSetting::on_channelTypeCombox_currentTextChanged(const QString &arg ui->pairChannelComBox->setCurrentText("- -"); ui->RPMComBox->setCurrentText("- -"); ui->lineEdit_sensorRange->setText("2054"); + ui->comboBox_sensorType->setCurrentIndex(3); }else if(arg1 == "声音"){ ui->lineEdit_SensorType->setText("378B02"); @@ -658,6 +663,7 @@ void CChannelSetting::on_channelTypeCombox_currentTextChanged(const QString &arg ui->pairChannelComBox->setCurrentText("- -"); ui->RPMComBox->setCurrentText("- -"); ui->lineEdit_sensorRange->setText("2000"); + ui->comboBox_sensorType->setCurrentIndex(0); }else if(arg1 == "轴向位移"){ @@ -687,6 +693,7 @@ void CChannelSetting::on_channelTypeCombox_currentTextChanged(const QString &arg ui->pairChannelComBox->setCurrentText("- -"); ui->RPMComBox->setCurrentText("- -"); ui->lineEdit_sensorRange->setText("2"); + ui->comboBox_sensorType->setCurrentIndex(0); }else if(arg1 == "动态电压"){ ui->lineEdit_SensorType->setText("电压"); ui->lineEdit_sensorEngineeringUnit->setText("V"); @@ -751,10 +758,10 @@ void CChannelSetting::on_comboBox_samplingRate_currentTextChanged(const QString } -void CChannelSetting::slotSetChannelData(QStringList& listChannelName) +void CChannelSetting::slotCopyChannelData(QStringList& listChannelID) { - qDebug() << listChannelName << endl; - for (int i = 0; i < listChannelName.size(); i++) + qDebug() << listChannelID << endl; + for (int i = 0; i < listChannelID.size(); i++) { QString strUpdateSql = QString(" set ChUnitCoeff = '%1' , ChUnitDot = %2,SensorICP = '%3', \ SensorType = '%4',bearingClearance='%5',bearingStartPosition='%6',\ @@ -771,7 +778,7 @@ void CChannelSetting::slotSetChannelData(QStringList& listChannelName) startBrands='%44',stopBrands='%45',tachAutoTach='%46',tachTriggerEdge='%47',tachTriggerHysteresis=%48,\ tachTriggerPerRev='%49',tachTriggerVoltageLevel='%50',thermalCoupleType = '%51',xFullScalePosition='%52',\ xProcessVariableName='%53',xZeroScalePosition='%54',zeroScalePosition='%55',speedRefChannelName = '%56',\ - defaultDisplay = '%57' ,confidenceDegree=%58,sectionNum=%59 where channelName = '%60'").\ + defaultDisplay = '%57' ,confidenceDegree=%58,sectionNum=%59,sensorTypes='%60' where channelId = '%61'").\ arg(channelSetting.ChUnitCoeff).arg(channelSetting.ChUnitDot).arg(channelSetting.sensorICP).\ arg(channelSetting.sensorType).arg(channelSetting.bearingClearance).arg(channelSetting.bearingStartPosition).\ arg(channelSetting.channelIntDiff).arg(channelSetting.channelRMSPkPk2Pk).arg(channelSetting.channelSensorType).\ @@ -791,7 +798,7 @@ void CChannelSetting::slotSetChannelData(QStringList& listChannelName) arg(channelSetting.tachTriggerHysteresis).arg(channelSetting.tachTriggerPerRev).arg(channelSetting.tachTriggerVoltageLevel).\ arg(channelSetting.thermalCoupleType).arg(channelSetting.xFullScalePosition).arg(channelSetting.xProcessVariableName).arg(channelSetting.xZeroScalePosition).\ arg(channelSetting.zeroScalePosition).arg(channelSetting.speedRefChannelName).arg(channelSetting.defaultDisplay).\ - arg(channelSetting.confidenceDegree).arg(channelSetting.sectionNum).arg(listChannelName[i]); + arg(channelSetting.confidenceDegree).arg(channelSetting.sectionNum).arg(channelSetting.sensorTypes).arg(listChannelID[i]); QString tableName = "t_ChannelSetting "; g_SqliteDB->UpdateDataSql(tableName,strUpdateSql); @@ -804,12 +811,11 @@ void CChannelSetting::on_pushButton_copy_clicked() QString strWhere = QString(" sensorModuleNo = %1 and channelId <> '%2' ").arg(channelSetting.sensorModuleNo).arg(channelSetting.channelId); QVector copyChannel = g_SqliteDB->GetDataMultiLine("t_ChannelSetting","*",strWhere); CopyChannelSetting *dialog = new CopyChannelSetting(); - connect(dialog, SIGNAL(sgSetChannelData(QStringList&)), this, SLOT(slotSetChannelData(QStringList&))); + connect(dialog, SIGNAL(sgCopyChannelData(QStringList&)), this, SLOT(slotCopyChannelData(QStringList&))); dialog->copyChannel = copyChannel; dialog->setWindowModality(Qt::ApplicationModal); dialog->displayCopyChannel(); dialog->show(); - } @@ -824,6 +830,9 @@ void CChannelSetting::on_comboBox_sensorType_currentTextChanged(const QString &a }else if(arg1 == "IEPE型传感器"){ ui->lineEdit_vMax->setText("12"); ui->lineEdit_vMin->setText("8"); + }else if(arg1 == "速度型传感器"){ + ui->lineEdit_vMax->setText("24"); + ui->lineEdit_vMin->setText("-24"); } } @@ -841,10 +850,14 @@ void CChannelSetting::on_pushButton_CustomFilter_clicked() CustomFilter *pCustomFilter = new CustomFilter(); pCustomFilter->channel_ID = channelSetting.channelId; +<<<<<<< HEAD if(ui->channelTypeCombox->currentText()=="径向振动位移" && ui->comboBox_sensorType->currentText() =="低频位移") pCustomFilter->vibrate_channel = 1; else pCustomFilter->vibrate_channel = 0; +======= + pCustomFilter->vibrate_channel = 1; +>>>>>>> font pCustomFilter->setWindowModality(Qt::ApplicationModal); pCustomFilter->show(); pCustomFilter->getfilterInfo(); diff --git a/ChannelSetting.h b/ChannelSetting.h index a689ffc..d82633e 100644 --- a/ChannelSetting.h +++ b/ChannelSetting.h @@ -43,7 +43,7 @@ private slots: void on_pushButton_CustomFilter_clicked(); public slots: - void slotSetChannelData(QStringList&); + void slotCopyChannelData(QStringList&); private: Ui::CChannelSetting *ui; QStringList m_itemList; @@ -52,7 +52,7 @@ private: signals: void sgSetChannelData(ChannelSetting); - + void ChannelSettingClose_sg(); }; #endif // CHANNELSETTING_H diff --git a/CharacteristicList.cpp b/CharacteristicList.cpp index f707473..b0496fc 100644 --- a/CharacteristicList.cpp +++ b/CharacteristicList.cpp @@ -30,7 +30,8 @@ void CCharacteristicList::timerEvent(QTimerEvent *ev) } void CCharacteristicList::InitTable() { - headerStr = QObject::tr("通道名称,单位,通频值,峰峰值,平均工作位置,间隙,安装角度,状态"); + headerStr = QObject::tr("通道名称,单位,通频值,峰峰值,反时限危险值,反时限警报值,平均工作位置,间隙,安装角度,状态"); + //headerStr = QObject::tr("通道名称,单位,通频值,峰峰值,平均工作位置,间隙,安装角度,状态"); ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); model = new QStandardItemModel(ui->tableView); ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选中行 @@ -41,7 +42,9 @@ void CCharacteristicList::InitTable() ui->tableView->setAlternatingRowColors(true); ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableView->setColumnWidth(0, 300); - ui->tableView->setColumnWidth(4, 200); + ui->tableView->setColumnWidth(4, 160); + ui->tableView->setColumnWidth(5, 160); + ui->tableView->setColumnWidth(6, 200); // for (int i = 0;i < g_ChannelView.size(); i++) // { @@ -83,10 +86,12 @@ void CCharacteristicList::DisPlayCharacteristic() model->setData(model->index(j,2,QModelIndex()),QString::number(g_Charateristic[j].DCValues,'f',g_Charateristic[j].ChUnitDot)); } model->setData(model->index(j,3,QModelIndex()),QString::number(g_Charateristic[j].DiagnosisPk2Pk,'f',g_Charateristic[j].ChUnitDot)); - model->setData(model->index(j,4,QModelIndex()),g_Charateristic[j].xFullScalePosition); - model->setData(model->index(j,5,QModelIndex()),QString::number(g_Charateristic[j].Gap,'f',g_Charateristic[j].ChUnitDot)); - model->setData(model->index(j,6,QModelIndex()),g_Charateristic[j].ZeroScalePosition); - model->setData(model->index(j,7,QModelIndex()),g_Charateristic[j].SensorStatus); + model->setData(model->index(j,4,QModelIndex()),g_Charateristic[j].InvertDanger); + model->setData(model->index(j,5,QModelIndex()),g_Charateristic[j].InvertAlarm); + model->setData(model->index(j,6,QModelIndex()),g_Charateristic[j].xFullScalePosition); + model->setData(model->index(j,7,QModelIndex()),QString::number(g_Charateristic[j].Gap,'f',g_Charateristic[j].ChUnitDot)); + model->setData(model->index(j,8,QModelIndex()),g_Charateristic[j].ZeroScalePosition); + model->setData(model->index(j,9,QModelIndex()),g_Charateristic[j].SensorStatus); } } } diff --git a/CharacteristicList.h b/CharacteristicList.h index 8331ecb..18f5afa 100644 --- a/CharacteristicList.h +++ b/CharacteristicList.h @@ -3,7 +3,7 @@ #include #include //数据模型类 -#include "HeaderView.h" +//#include "HeaderView.h" #include "TableHeaderView.h" #include "global.h" #include //定时器类 diff --git a/Configuration.cpp b/Configuration.cpp index d991632..73ab5e9 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -31,6 +31,8 @@ CConfiguration::CConfiguration(QWidget *parent) : pHeader2->setSectionResizeMode(QHeaderView::ResizeToContents); pHeader2->setStretchLastSection(false); + ui->treeView_Available->setEditTriggers(QAbstractItemView::NoEditTriggers); + ui->treeView_Relay->setEditTriggers(QAbstractItemView::NoEditTriggers); connect(ui->comboBox_WC,SIGNAL(currentTextChanged(const QString &)),this,SLOT(on_comboBox_WC_currentTextChanged2(const QString&))); } @@ -87,8 +89,13 @@ void CConfiguration::Init() item1->appendRow(itemAnd); item1->appendRow(itemOr); +#ifdef Q_OS_WIN32 + QString name = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; +#endif +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/TriggerSettings.json"; +#endif - QString name = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; QFile loadFile(name); if(!loadFile.open(QIODevice::ReadOnly)) { @@ -153,6 +160,10 @@ void CConfiguration::Init() strStaticData = "峰值"; else if(strList[0] == "MonitorPk2Pk") strStaticData = "监测保护峰峰值"; + else if(strList[0] == "InvertDanger") + strStaticData = "反时限危险值"; + else if(strList[0] == "InvertAlarm") + strStaticData = "反时限警报值"; if(xAlertOverEnabled == 1){ item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "高于警报值")); @@ -187,7 +198,13 @@ void CConfiguration::Init() void CConfiguration::LoadConfiguration() { - QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; +#ifdef Q_OS_WIN32 + QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; +#endif +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations.json"; +#endif + QFile loadFile(name); if(!loadFile.open(QIODevice::ReadOnly)) { @@ -459,6 +476,7 @@ QJsonObject CConfiguration::SelectChannel(int channelNo) ConfiguraitonsObj["ChannelId"] = g_ChannelBaseInfo[i].channelID; ConfiguraitonsObj["ChannelName"] = g_ChannelBaseInfo[i].channelName; ConfiguraitonsObj["ChannelNoInBoard"] = g_ChannelBaseInfo[i].channelNoInBoard; + ConfiguraitonsObj["DelaySeconds"] = ui->lineEdit_delay->text(); ConfiguraitonsObj["ChannelOperate"] = -1; } } @@ -733,6 +751,10 @@ void CConfiguration::on_comboBox_WC_currentTextChanged2(const QString &arg1) strStaticData = "峰值"; else if(strList[0] == "MonitorPk2Pk") strStaticData = "监测保护峰峰值"; + else if(strList[0] == "InvertDanger") + strStaticData = "反时限危险值"; + else if(strList[0] == "InvertAlarm") + strStaticData = "反时限警报值"; if(xAlertOverEnabled == 1){ item = new QStandardItem(QString(channelName + "-" + strStaticData + "-" + "高于警报值")); @@ -792,11 +814,23 @@ void CConfiguration::PushData() QJsonDocument jsonDoc; jsonDoc.setObject(WorkConditionConfiguraitonsObj); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations.json"; +#endif + QJsonDocument jsonDoc2; jsonDoc2.setObject(WorkConditionConfiguraitonsObj2); - QString fileName2 = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations2.json"; + +#ifdef Q_OS_WIN32 + QString fileName2 = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations2.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName2 = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations2.json"; +#endif QFile file(fileName); file.open(QIODevice::WriteOnly); @@ -892,6 +926,7 @@ void CConfiguration::ViewRelay(int ChannelNoInBoard) ui->lineEdit_2->setText(strSecondDelaySeconds); for (int j = 0;j < tempArray.size() ;j++ ) { if(tempArray.at(j)["ChannelNoInBoard"] == ChannelNoInBoard){ + ui->lineEdit_delay->setText(tempArray.at(j)["DelaySeconds"].toString()); QJsonArray tempArray2 = tempArray.at(j)["logicExpress"].toArray(); for (int k = 0; k < tempArray2.size(); k++) { QJsonObject tempObj2 = tempArray2[k].toObject(); @@ -1095,6 +1130,7 @@ void CConfiguration::on_radioButton_1_clicked() { m_curentRLY = 3; + ui->label_3->setText(ui->radioButton_1->text()+":"); ViewRelay(3); } @@ -1102,6 +1138,7 @@ void CConfiguration::on_radioButton_1_clicked() void CConfiguration::on_radioButton_2_clicked() { m_curentRLY = 4; + ui->label_3->setText(ui->radioButton_2->text()+":"); ViewRelay(4); } @@ -1109,6 +1146,7 @@ void CConfiguration::on_radioButton_2_clicked() void CConfiguration::on_radioButton_3_clicked() { m_curentRLY = 5; + ui->label_3->setText(ui->radioButton_3->text()+":"); ViewRelay(5); } @@ -1116,6 +1154,7 @@ void CConfiguration::on_radioButton_3_clicked() void CConfiguration::on_radioButton_4_clicked() { m_curentRLY = 6; + ui->label_3->setText(ui->radioButton_4->text()+":"); ViewRelay(6); } @@ -1123,6 +1162,7 @@ void CConfiguration::on_radioButton_4_clicked() void CConfiguration::on_radioButton_5_clicked() { m_curentRLY = 7; + ui->label_3->setText(ui->radioButton_5->text()+":"); ViewRelay(7); } @@ -1130,6 +1170,7 @@ void CConfiguration::on_radioButton_5_clicked() void CConfiguration::on_radioButton_6_clicked() { m_curentRLY = 8; + ui->label_3->setText(ui->radioButton_6->text()+":"); ViewRelay(8); } @@ -1137,6 +1178,7 @@ void CConfiguration::on_radioButton_6_clicked() void CConfiguration::on_radioButton_8_clicked() { m_curentRLY = 10; + ui->label_3->setText(ui->radioButton_8->text()+":"); ViewRelay(10); } @@ -1144,6 +1186,7 @@ void CConfiguration::on_radioButton_8_clicked() void CConfiguration::on_radioButton_7_clicked() { m_curentRLY = 9; + ui->label_3->setText(ui->radioButton_7->text()+":"); ViewRelay(9); } @@ -1151,6 +1194,7 @@ void CConfiguration::on_radioButton_7_clicked() void CConfiguration::on_radioButton_9_clicked() { m_curentRLY = 11; + ui->label_3->setText(ui->radioButton_9->text()+":"); ViewRelay(11); } @@ -1158,6 +1202,7 @@ void CConfiguration::on_radioButton_9_clicked() void CConfiguration::on_radioButton_10_clicked() { m_curentRLY = 12; + ui->label_3->setText(ui->radioButton_10->text()+":"); ViewRelay(12); } diff --git a/Configuration.ui b/Configuration.ui index c97caa2..0f8d184 100644 --- a/Configuration.ui +++ b/Configuration.ui @@ -392,7 +392,7 @@ color: rgb(27, 30, 35); - 第二层延时: + 工况延时: @@ -437,6 +437,45 @@ color: rgb(27, 30, 35); + + + + + 70 + 0 + + + + - - + + + + + + + + 50 + 0 + + + + + 50 + 16777215 + + + + 0 + + + + + + + S + + + diff --git a/CopyChannelSetting.cpp b/CopyChannelSetting.cpp index 20cc8e3..0674898 100644 --- a/CopyChannelSetting.cpp +++ b/CopyChannelSetting.cpp @@ -31,28 +31,29 @@ void CopyChannelSetting::displayCopyChannel() row ++ ; } - m_listCheckBox.append(checkButton); + m_mapCheckBox.insert(copyChannel[i].channelId,checkButton); } } void CopyChannelSetting::on_pushButton_confirm_clicked() { - QStringList listChannelName; - for (int i = 0; i < m_listCheckBox.size(); i++) { - if(m_listCheckBox[i]->checkState()){ - qDebug() << m_listCheckBox[i]->text() << endl; - listChannelName.append(m_listCheckBox[i]->text()); - } + QStringList listChannelID; + QMap::iterator iter = m_mapCheckBox.begin(); + for (; iter != m_mapCheckBox.end(); iter++) { + if(iter.value()->checkState()){ + listChannelID.append(iter.key()); + } } - sgSetChannelData(listChannelName); + sgCopyChannelData(listChannelID); this->close(); } void CopyChannelSetting::on_pushButton_selectAll_clicked() { - for (int i = 0; i < m_listCheckBox.size(); i++) { - m_listCheckBox[i]->setCheckState(Qt::Checked); + QMap::iterator iter = m_mapCheckBox.begin(); + for (; iter != m_mapCheckBox.end(); iter++) { + iter.value()->setCheckState(Qt::Checked); } } diff --git a/CopyChannelSetting.h b/CopyChannelSetting.h index c781077..e2a5b57 100644 --- a/CopyChannelSetting.h +++ b/CopyChannelSetting.h @@ -28,9 +28,9 @@ private slots: private: Ui::CopyChannelSetting *ui; - QList m_listCheckBox; + QMap m_mapCheckBox; signals: - void sgSetChannelData(QStringList&); + void sgCopyChannelData(QStringList&); }; #endif // COPYCHANNELSETTING_H diff --git a/CopyDatFile.cpp b/CopyDatFile.cpp index b3612d5..27934e6 100644 --- a/CopyDatFile.cpp +++ b/CopyDatFile.cpp @@ -119,8 +119,8 @@ void CCopyDatFile::on_pushButton_refresh_clicked() ui -> treeWidget_dist ->clear(); ftp -> cd("/run/media/"); ui->label_path->setText("/run/media/"); - m_strDistPwd = ""; - m_strDistPwd = "/run/media/"; + m_strDistPath = ""; + m_strDistPath = "/run/media/"; ftp->list(); } @@ -133,10 +133,10 @@ void CCopyDatFile::processItem(QTreeWidgetItem *item, int /*column*/) currentPath += '/'; currentPath += name; ftp->cd(name); - m_strDistPwd = ""; + m_strDistPath = ""; - m_strDistPwd = "/run/media" + currentPath; - ui->label_path->setText(m_strDistPwd); + m_strDistPath = "/run/media" + currentPath; + ui->label_path->setText(m_strDistPath); currentPath = ""; ftp->list(); return; @@ -153,7 +153,7 @@ void CCopyDatFile::slotCopyItem() allObj.insert("cmd", "100"); cmdBody.insert("subcmd",1); cmdBody.insert("srcfile",str); - cmdBody.insert("dstdirectory",m_strDistPwd); + cmdBody.insert("dstdirectory",m_strDistPath); allObj["cmdBody"] = cmdBody; QNetworkRequest req; QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP); @@ -179,7 +179,7 @@ void CCopyDatFile::on_pushButton_exit_clicked() QJsonObject allObj,cmdBody; allObj.insert("cmd", "100"); cmdBody.insert("subcmd",3); - cmdBody.insert("dstdirectory",m_strDistPwd); + cmdBody.insert("dstdirectory",m_strDistPath); allObj["cmdBody"] = cmdBody; QNetworkRequest req; QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP); diff --git a/CopyDatFile.h b/CopyDatFile.h index b9ec3c5..e45fb03 100644 --- a/CopyDatFile.h +++ b/CopyDatFile.h @@ -3,8 +3,8 @@ #include #include -#include -#include +#include +#include #include #include #include @@ -42,7 +42,7 @@ private: QFtp *ftp = nullptr; QStandardItemModel *model; QString currentPath; - QString m_strDistPwd; + QString m_strDistPath; QAction *copyAction; }; diff --git a/CustomFilter.cpp b/CustomFilter.cpp index 79b7bd2..5546ba4 100644 --- a/CustomFilter.cpp +++ b/CustomFilter.cpp @@ -92,7 +92,11 @@ void CustomFilter::on_pushButton_Submit_clicked() type = false; } +<<<<<<< HEAD if(ui->spinBox_start->text().toInt() >= ui->spinBox_stop->text().toInt()){ +======= + if(ui->doubleSpinBox_start->text().toDouble() >= ui->doubleSpinBox_stop->text().toDouble()){ +>>>>>>> font QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("频率下限设置错误!")); return; } @@ -100,10 +104,18 @@ void CustomFilter::on_pushButton_Submit_clicked() sendData2["cmd"] = "95"; sendData2["chan_id"] = channel_ID; sendData2["open"] = type; +<<<<<<< HEAD sendData2["start"] = ui->spinBox_start->text().toInt(); sendData2["stop"] = ui->spinBox_stop->text().toInt(); req.setUrl(sUrl); g_NetMgr->PostJson(req,sendData2); +======= + sendData2["start"] = ui->doubleSpinBox_start->text().toDouble(); + sendData2["stop"] = ui->doubleSpinBox_stop->text().toDouble(); + req.setUrl(sUrl); + g_NetMgr->PostJson(req,sendData2); + this->close(); +>>>>>>> font } void CustomFilter::slotNetMgr(QString sAddr, const QVariant &msg) @@ -122,13 +134,23 @@ void CustomFilter::slotNetMgr(QString sAddr, const QVariant &msg) if(arrays_value.toString() == "94"){ int Statusfilter = objec.take("status").toInt(); +<<<<<<< HEAD ui->spinBox_start->setValue(objec.take("start").toInt()); ui->spinBox_stop->setValue(objec.take("stop").toInt()); +======= + ui->doubleSpinBox_start->setValue(objec.take("start").toDouble()); + ui->doubleSpinBox_stop->setValue(objec.take("stop").toDouble()); +>>>>>>> font if(Statusfilter){ ui->comboBox_open->setCurrentText("是"); }else if(!Statusfilter){ ui->comboBox_open->setCurrentText("否"); +<<<<<<< HEAD +======= + ui->doubleSpinBox_start->setEnabled(false); + ui->doubleSpinBox_stop->setEnabled(false); +>>>>>>> font } QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("获取成功!")); }else if(arrays_value.toString() == "98"){ @@ -145,13 +167,23 @@ void CustomFilter::slotNetMgr(QString sAddr, const QVariant &msg) QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("获取成功!")); }else if(arrays_value.toString() == "112"){ int Statusfilter = objec.take("status").toInt(); +<<<<<<< HEAD ui->spinBox_start->setValue(objec.take("start").toInt()); ui->spinBox_stop->setValue(objec.take("stop").toInt()); +======= + ui->doubleSpinBox_start->setValue(objec.take("start").toDouble()); + ui->doubleSpinBox_stop->setValue(objec.take("stop").toDouble()); +>>>>>>> font if(Statusfilter){ ui->comboBox_open->setCurrentText("是"); }else if(!Statusfilter){ ui->comboBox_open->setCurrentText("否"); +<<<<<<< HEAD +======= + ui->doubleSpinBox_start->setEnabled(false); + ui->doubleSpinBox_stop->setEnabled(false); +>>>>>>> font } int num = objec["num"].toInt(); int j = 0; @@ -170,8 +202,13 @@ void CustomFilter::slotNetMgr(QString sAddr, const QVariant &msg) } if(!vibrate_channel){ ui->comboBox_open->setEnabled(false); +<<<<<<< HEAD ui->spinBox_start->setEnabled(false); ui->spinBox_stop->setEnabled(false); +======= + ui->doubleSpinBox_start->setEnabled(false); + ui->doubleSpinBox_stop->setEnabled(false); +>>>>>>> font } } @@ -189,7 +226,19 @@ void CustomFilter::getfilterInfo() } +<<<<<<< HEAD void CustomFilter::comboBox_open_currentTextChanged(const QString &) { qDebug() << "" << endl; +======= +void CustomFilter::comboBox_open_currentTextChanged(const QString &str) +{ + if(str == "否"){ + ui->doubleSpinBox_start->setEnabled(false); + ui->doubleSpinBox_stop->setEnabled(false); + }else if(str == "是"){ + ui->doubleSpinBox_start->setEnabled(true); + ui->doubleSpinBox_stop->setEnabled(true); + } +>>>>>>> font } diff --git a/CustomFilter.h b/CustomFilter.h index 0c8dc2a..e50a2d7 100644 --- a/CustomFilter.h +++ b/CustomFilter.h @@ -28,7 +28,11 @@ private slots: void on_pushButton_Submit_clicked(); void slotNetMgr(QString sAddr,const QVariant& msg); +<<<<<<< HEAD void comboBox_open_currentTextChanged(const QString &); +======= + void comboBox_open_currentTextChanged(const QString &str); +>>>>>>> font private: Ui::CustomFilter *ui; TableHeaderView *myHeader; diff --git a/CustomFilter.ui b/CustomFilter.ui index 4ce3dff..99cdb6c 100644 --- a/CustomFilter.ui +++ b/CustomFilter.ui @@ -94,6 +94,7 @@ color: rgb(27, 30, 35); +<<<<<<< HEAD @@ -103,6 +104,11 @@ color: rgb(27, 30, 35); 9999 +======= + + + 999999.989999999990687 +>>>>>>> font @@ -138,6 +144,7 @@ color: rgb(27, 30, 35); +<<<<<<< HEAD @@ -150,6 +157,17 @@ color: rgb(27, 30, 35); 200 +======= + + + 2 + + + 0.000000000000000 + + + 999999.989999999990687 +>>>>>>> font @@ -196,7 +214,15 @@ color: rgb(27, 30, 35); +<<<<<<< HEAD +======= + + + false + + +>>>>>>> font diff --git a/DIO_Board.cpp b/DIO_Board.cpp index 05ef386..3eb432e 100644 --- a/DIO_Board.cpp +++ b/DIO_Board.cpp @@ -15,7 +15,10 @@ CDIO_Board::CDIO_Board(QWidget *parent) : Init(); CRealTimeForm *pRealTime = new CRealTimeForm(); connect(pRealTime,SIGNAL(sigDOStatus(QJsonArray&,QJsonArray&)), this, SLOT(slotDOStatus(QJsonArray&,QJsonArray&))); - + if(g_strIOControl == "1"){ + ui->pushButton_Close->setEnabled(1); + ui->pushButton_Open->setEnabled(1); + } } @@ -135,6 +138,18 @@ void CDIO_Board::Init() void CDIO_Board::on_pushButton_Close_clicked() { + QMessageBox:: StandardButton iResult = QMessageBox::question(this, QStringLiteral("提示"), + QStringLiteral("确认后将关闭选择的开出通道!"), + QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes); + switch (iResult) { + case QMessageBox::Yes: + break; + case QMessageBox::No: + return; + break; + default: + break; + } QJsonObject allObj,cmdBody,itemObj,DOContralObj; QJsonArray arrayBody; allObj.insert("cmd", "91"); @@ -238,6 +253,18 @@ void CDIO_Board::on_pushButton_Open_clicked() // ] // } // } + QMessageBox:: StandardButton iResult = QMessageBox::question(this, QStringLiteral("提示"), + QStringLiteral("确认后将打开选择的开出通道!"), + QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes); + switch (iResult) { + case QMessageBox::Yes: + break; + case QMessageBox::No: + return; + break; + default: + break; + } QJsonObject allObj,cmdBody,itemObj,DOContralObj; QJsonArray arrayBody; allObj.insert("cmd", "91"); diff --git a/DIO_Board.ui b/DIO_Board.ui index 9182c7f..68c8d07 100644 --- a/DIO_Board.ui +++ b/DIO_Board.ui @@ -1086,6 +1086,9 @@ color: rgb(27, 30, 35); + + false + 120 @@ -1118,6 +1121,9 @@ color: rgb(27, 30, 35); + + false + 120 diff --git a/DataGraphView.cpp b/DataGraphView.cpp index 5e94609..44fdafe 100644 --- a/DataGraphView.cpp +++ b/DataGraphView.cpp @@ -337,7 +337,7 @@ void CDataGraphView::ViewData(QString& strChannelID,QVector& wavedata QVector::iterator min = std::min_element(std::begin(value), std::end(value)); double biggest = *max; double minimum = *min; - ui->widget_TimeGraph->yAxis->setRange(minimum-1,biggest+2); + ui->widget_TimeGraph->yAxis->setRange(minimum,biggest); ui->widget_TimeGraph->axisRect()->setRangeZoomFactor(1.2,1); ui->widget_TimeGraph->axisRect()->setRangeZoomAxes(ui->widget_TimeGraph->xAxis,ui->widget_TimeGraph->yAxis); ui->widget_TimeGraph->replot(); diff --git a/DataWatch3500_GUI.pro b/DataWatch3500_GUI.pro index a5efdcf..1dc381c 100644 --- a/DataWatch3500_GUI.pro +++ b/DataWatch3500_GUI.pro @@ -4,7 +4,7 @@ # #------------------------------------------------- -QT += core gui network charts ftp +QT += core gui network charts greaterThan(QT_MAJOR_VERSION, 4): QT += widgets sql ftp printsupport @@ -16,7 +16,6 @@ TEMPLATE = app # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS -QMAKE_LFLAGS += -Wl,--large-address-aware # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. @@ -29,6 +28,7 @@ CONFIG += c++11 SOURCES += \ AddChannel.cpp \ AlarmDetails.cpp \ + Backup.cpp \ CharacteristicList.cpp \ Configuration.cpp \ CopyChannelSetting.cpp \ @@ -38,6 +38,7 @@ SOURCES += \ DataGraphView.cpp \ FileServerConfig.cpp \ HistoryAlarm.cpp \ + ImportConfig.cpp \ Mqttclient.cpp \ MyTreeView.cpp \ NTPServerConfig.cpp \ @@ -80,6 +81,7 @@ SOURCES += \ HEADERS += \ AddChannel.h \ AlarmDetails.h \ + Backup.h \ CharacteristicList.h \ Configuration.h \ CopyChannelSetting.h \ @@ -89,6 +91,7 @@ HEADERS += \ DataGraphView.h \ FileServerConfig.h \ HistoryAlarm.h \ + ImportConfig.h \ Mqttclient.h \ MyTreeView.h \ NTPServerConfig.h \ @@ -131,6 +134,8 @@ HEADERS += \ FORMS += \ AddChannel.ui \ AlarmDetails.ui \ + BackUp.ui \ + Backup.ui \ CharacteristicList.ui \ Configuration.ui \ CopyChannelSetting.ui \ @@ -140,6 +145,7 @@ FORMS += \ DataGraphView.ui \ FileServerConfig.ui \ HistoryAlarm.ui \ + ImportConfig.ui \ NTPServerConfig.ui \ OtherConfig.ui \ PSConfig.ui \ @@ -175,9 +181,14 @@ DISTFILES += \ INCLUDEPATH += $$PWD/include/mqtt INCLUDEPATH += $$PWD/include/fftw +INCLUDEPATH += $$PWD/include/ftp -LIBS += -L$$PWD/lib/fftw/ -llibfftw3-3 -llibfftw3f-3 -llibfftw3l-3 +LIBS += -L$$PWD/lib/ftp/ -lQt5Ftp + +win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/fftw/ -llibfftw3-3 -llibfftw3f-3 -llibfftw3l-3 +else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/fftw/ -llibfftw3-3 -llibfftw3f-3 -llibfftw3l-3 +else:unix: LIBS += -L$$PWD/lib/fftw/ -lfftw3 win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/mqtt/ -lQt5Qmqtt else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/mqtt/ -lQt5Qmqttd -else:unix: LIBS += -L$$PWD/lib/MQTT/ -lQt5Qmqtt +else:unix: LIBS += -L$$PWD/lib/mqtt/ -lQt5Qmqtt diff --git a/FileServerConfig.cpp b/FileServerConfig.cpp index 9ef59d0..1519d39 100644 --- a/FileServerConfig.cpp +++ b/FileServerConfig.cpp @@ -47,7 +47,13 @@ void CFileServerConfig::Init() ui->comboBox_NetStatus_PS->addItem("DHCP"); ui->comboBox_NetStatus_PL->addItem("STATIC"); ui->comboBox_NetStatus_PL->addItem("DHCP"); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\NetWorkConfig.json"; +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\NetWorkConfig.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/NetWorkConfig.json"; +#endif + if(!fileName.isEmpty()) { qDebug() << "打开" << fileName ; @@ -86,8 +92,13 @@ void CFileServerConfig::Init() } } +#ifdef Q_OS_WIN32 + fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json"; +#endif +#ifdef Q_OS_LINUX + fileName = QCoreApplication::applicationDirPath() + "/config/ServerConfig.json"; +#endif - fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json"; if(!fileName.isEmpty()) { qDebug() << "打开" << fileName ; @@ -111,8 +122,13 @@ void CFileServerConfig::Init() ui->lineEdit_writingPeriod->setText(OptionObject["writingPeriodLocalServer"].toString()); } } +#ifdef Q_OS_WIN32 + fileName = QCoreApplication::applicationDirPath() + "\\config\\TcpConfig.json"; +#endif +#ifdef Q_OS_LINUX + fileName = QCoreApplication::applicationDirPath() + "/config/TcpConfig.json"; +#endif - fileName = QCoreApplication::applicationDirPath() + "\\config\\TcpConfig.json"; if(!fileName.isEmpty()) { QFile file(fileName); @@ -134,8 +150,13 @@ void CFileServerConfig::Init() QString strPort = QString("%1").arg(jsonObject["port"].toInt()); ui->lineEdit_TCP_PORT->setText(strPort); } +#ifdef Q_OS_WIN32 + fileName = QCoreApplication::applicationDirPath() + "\\config\\ModbusConfig.json"; +#endif +#ifdef Q_OS_LINUX + fileName = QCoreApplication::applicationDirPath() + "/config/ModbusConfig.json"; +#endif - fileName = QCoreApplication::applicationDirPath() + "\\config\\ModbusConfig.json"; if(!fileName.isEmpty()) { QFile file(fileName); @@ -190,7 +211,13 @@ void CFileServerConfig::on_pushButtonPush_clicked() QJsonDocument jsonDoc; jsonDoc.setObject(netWorkObj); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\NetWorkConfig.json"; +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\NetWorkConfig.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/NetWorkConfig.json"; +#endif + QFile file(fileName); file.open(QIODevice::WriteOnly); @@ -214,7 +241,13 @@ void CFileServerConfig::on_pushButtonPush_clicked() QJsonDocument jsonDoc2; jsonDoc2.setObject(m_ServerObject); - fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json"; +#ifdef Q_OS_WIN32 + fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json"; +#endif +#ifdef Q_OS_LINUX + fileName = QCoreApplication::applicationDirPath() + "/config/ServerConfig.json"; +#endif + QFile file2(fileName); file2.open(QIODevice::WriteOnly); @@ -302,7 +335,13 @@ void CFileServerConfig::on_pushButtonConfirm_clicked() QJsonDocument jsonDoc; jsonDoc.setObject(TcpConfigObj); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TcpConfig.json"; + +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TcpConfig.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/TcpConfig.json"; +#endif QFile file(fileName); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); @@ -324,7 +363,13 @@ void CFileServerConfig::on_pushButtonConfirm2_clicked() QJsonDocument jsonDoc; jsonDoc.setObject(RTUConfigObj); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ModbusConfig.json"; + +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ModbusConfig.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/ModbusConfig.json"; +#endif QFile file(fileName); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); diff --git a/HistoryAlarm.cpp b/HistoryAlarm.cpp index fdf3e68..6b82b4d 100644 --- a/HistoryAlarm.cpp +++ b/HistoryAlarm.cpp @@ -6,29 +6,26 @@ #include "AlarmDetails.h" #include "ftpclient.h" #include "global.h" - +#include "NetMgr.h" CHistoryAlarm::CHistoryAlarm(QWidget *parent) : QWidget(parent), ui(new Ui::CHistoryAlarm) { ui->setupUi(this); - headerStr = QObject::tr("序号,报警级别,报警内容,报警时间,复归时间,报警详情"); - + headerStr = QObject::tr(" ,序号,报警级别,报警内容,报警时间,复归时间,报警详情"); + myHeader = new TableHeaderView(Qt::Horizontal, ui->tableView); model = new QStandardItemModel(ui->tableView); ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选中行 + connect(myHeader, &TableHeaderView::stateChanged, this, &CHistoryAlarm::headerStateChangedSlot); QStringList headerList = headerStr.split(","); model->setHorizontalHeaderLabels(headerList); model->setColumnCount(headerList.size()); ui->tableView->setModel(model); - ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); - ui->tableView->setColumnWidth(2, 300); - ui->tableView->setColumnWidth(3, 200); - ui->tableView->setColumnWidth(4, 200); - ui->tableView->setAlternatingRowColors(true); + ui->tableView->horizontalHeader()->setSectionResizeMode(0,QHeaderView::ResizeToContents); - ui->tableView->horizontalHeader()->setSectionResizeMode(5,QHeaderView::ResizeToContents); + ui->tableView->horizontalHeader()->setSectionResizeMode(6,QHeaderView::ResizeToContents); ui->dateTimeEdit_start->setCalendarPopup(true); ui->dateTimeEdit_end->setCalendarPopup(true); @@ -41,6 +38,19 @@ CHistoryAlarm::CHistoryAlarm(QWidget *parent) : ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); + ui->tableView->setHorizontalHeader(myHeader); + ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //选中行 + + CheckBoxDelegate *pCheckDelegate = new CheckBoxDelegate(this); + ui->tableView->setItemDelegateForColumn(0, pCheckDelegate); + ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); + ui->tableView->setColumnWidth(0, 100); + ui->tableView->setColumnWidth(3, 450); + ui->tableView->setColumnWidth(4, 200); + ui->tableView->setColumnWidth(5, 200); + ui->tableView->setAlternatingRowColors(true); + + connect(ui->comboBox_channel,SIGNAL(currentIndexChanged(const QString &)),this,SLOT(on_comboBox_channel_currentTextChanged(const QString&))); ui->comboBox_channel->addItem("请选择通道..."); @@ -67,14 +77,34 @@ void CHistoryAlarm::on_comboBox_channel_currentTextChanged(const QString& strCha } } +void CHistoryAlarm::headerStateChangedSlot(int state) +{ + int rowCount = model->rowCount(); + if (state == 2)//全选 + { + for (int j = 0; jindex(j, 0, QModelIndex()); + model->setData(index, true, Qt::UserRole); + } + } + else if (state == 0) //全不选 + { + for (int j = 0; jindex(j, 0, QModelIndex()); + model->setData(index, false, Qt::UserRole); + } + } +} void CHistoryAlarm::createRowItem(int Row,QVariantList RowItem) { model->setRowCount(Row+1); - for (int j = 0; j < RowItem.size(); ++j) + for (int j = 1; j < RowItem.size()+1; ++j) { - model->setData(model->index(Row,j,QModelIndex()),RowItem.at(j)); + model->setData(model->index(Row,j,QModelIndex()),RowItem.at(j-1)); } } @@ -111,17 +141,44 @@ void CHistoryAlarm::on_pushButton_search_clicked() triggerLevel = "危险"; } + QString strFeatureName = ""; + if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("MinValues")) + strFeatureName = "最小值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("MaxValues")) + strFeatureName = "最大值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("DCValues")) + strFeatureName = "偏置电压/Gap"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("RMSValues")) + strFeatureName = "有效值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("DiagnosisPk2Pk")) + strFeatureName = "诊断峰峰值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("IntegratRMS")) + strFeatureName = "有效值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("IntegratPk2Pk")) + strFeatureName = "积分峰峰值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("SpeedProfileSpeed")) + strFeatureName = "转速"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("IntegratPk2Pk/2")) + strFeatureName = "峰值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("DiagnosisPeak")) + strFeatureName = "峰值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("MonitorPk2Pk")) + strFeatureName = "监测保护峰峰值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("InvertDanger") ) + strFeatureName = "反时限危险值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("InvertAlarm")) + strFeatureName = "反时限警报值"; if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("Over")){ - triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + "高于" + triggerLevel + "值"; + triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + strFeatureName+ "-" + "高于" + triggerLevel + "值"; }else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("Under")){ - triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + "低于" + triggerLevel + "值"; + triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + strFeatureName+ "-" + "低于" + triggerLevel + "值"; } strRowItem << i + 1 << triggerLevel << triggerEventName << TStr << resetTime; createRowItem(i,strRowItem); } QMyTableViewBtnDelegate *m_btnDelegate = new QMyTableViewBtnDelegate(QStringList()<<"详情", this); - ui->tableView->setItemDelegateForColumn(5, m_btnDelegate); + ui->tableView->setItemDelegateForColumn(6, m_btnDelegate); connect(m_btnDelegate, SIGNAL(editData(const QModelIndex &)), this,SLOT(Details(const QModelIndex &))); }else{ @@ -511,7 +568,13 @@ void CHistoryAlarm::Details(const QModelIndex &index) strFileName = strFileName.left(strFileName.size()-1); QStringList strList = strFileName.split("/"); - QString strPath = QCoreApplication::applicationDirPath() + "\\dat\\" + strList[5]; + +#ifdef Q_OS_WIN32 + QString strPath = QCoreApplication::applicationDirPath() + "\\dat\\" + strList[5]; +#endif +#ifdef Q_OS_LINUX + QString strPath = QCoreApplication::applicationDirPath() + "/dat/" + strList[5]; +#endif customLogMessageHandler(QtDebugMsg,"HistoryAlarm:" + strPath); QFile file(strPath); g_LocalFile = strPath; @@ -540,3 +603,65 @@ void CHistoryAlarm::ItemCheckStateSlot(QString strID, bool bChecked) DateViewdialog->ViewData(strID,mapWaveData[strID]); } + +void CHistoryAlarm::on_pushButton_delete_clicked() +{ + QMessageBox:: StandardButton iResult = QMessageBox::question(this, QStringLiteral("提示"), + QStringLiteral("确认后将删除选中的记录!"), + QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes); + switch (iResult) { + case QMessageBox::Yes: + break; + case QMessageBox::No: + return; + break; + default: + break; + } + QStringList strListFileName; + QString strChannelName; + QVector vecTriggerEvent; + for (int i = 0; i < model->rowCount(); i++) { + QModelIndex indexCheck = model->index(i,0); + bool check = model->data(indexCheck, Qt::UserRole).toBool(); + if(check){ + QString strDate = model->data(model->index(i,4)).toString(); + strChannelName = model->data(model->index(i,3)).toString(); + QStringList channellist = strChannelName.split("-"); + QDateTime dateTime = QDateTime::fromString(strDate, "yyyy-MM-dd hh:mm:ss"); + + QString strTableNameAlarm = "t_AlarmStatusInfo",strTableNameTriger = "t_TriggerEvent"; + // 将QDateTime转换为时间戳 + qint64 timestamp = dateTime.toSecsSinceEpoch(); + QString strWhere1 = QString("timestamp = '%1' and channelName = '%2'").arg(timestamp).arg(channellist[0]); + QString strWhere2 = QString("triggeredTime = %1 and triggeredChannelName = '%2'").arg(timestamp).arg(channellist[0]); + QString strCol = "triggeredFileName"; + QString strTableName = QString("t_TriggerEvent ORDER BY ABS(triggeredTime - %1) LIMIT 1").arg(timestamp); + QString strFileName = g_SqliteDB->GetSingelLine(strTableName,strCol); + strFileName = strFileName.left(strFileName.size()-1); + strListFileName = strFileName.split("/"); + g_SqliteDB->DeleteDataW(strTableNameAlarm,strWhere1); + g_SqliteDB->DeleteDataW(strTableNameTriger,strWhere2); + } + } + + QJsonObject allObj,cmdBody; + QJsonArray arrayFileName; + allObj.insert("cmd", "40"); + cmdBody.insert("type","ARRAY"); + arrayFileName.append(strChannelName); + cmdBody.insert("fileName",strListFileName[5]); + allObj["cmdBody"] = cmdBody; + QNetworkRequest req; + QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP); + req.setUrl(sUrl); + g_NetMgr->PostJson(req,allObj); + + QString dat_path = QCoreApplication::applicationDirPath() + "\\dat\\" + strListFileName[5]; + QDir datDir(dat_path); + if (datDir.exists()) { + datDir.removeRecursively(); + } + on_pushButton_search_clicked(); +} + diff --git a/HistoryAlarm.h b/HistoryAlarm.h index 9db1aee..b448144 100644 --- a/HistoryAlarm.h +++ b/HistoryAlarm.h @@ -26,6 +26,9 @@ private slots: void Details(const QModelIndex &index); void downloadProcess_Slot(qint64 byteSend, qint64 byteTotal); void ItemCheckStateSlot(QString strID, bool bChecked); + void headerStateChangedSlot(int state); + void on_pushButton_delete_clicked(); + private: Ui::CHistoryAlarm *ui; diff --git a/HistoryAlarm.ui b/HistoryAlarm.ui index aa2dd9d..28dbdd4 100644 --- a/HistoryAlarm.ui +++ b/HistoryAlarm.ui @@ -145,6 +145,35 @@ color: rgb(27, 30, 35); + + + + + 96 + 28 + + + + + 96 + 28 + + + + #pushButton_delete { border-image: url(:/image/Btn/normal_Btn.png); + color:#1f5188 } +#pushButton_delete:hover { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_delete:pressed { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_delete:checked { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} + + + 删除 + + + diff --git a/ImportConfig.cpp b/ImportConfig.cpp new file mode 100644 index 0000000..4a50600 --- /dev/null +++ b/ImportConfig.cpp @@ -0,0 +1,337 @@ +#include "ImportConfig.h" +#include "ui_ImportConfig.h" +#include +#include +#include "sqlitedb.h" + +CImportConfig::CImportConfig(QWidget *parent) : + QWidget(parent), + ui(new Ui::CImportConfig) +{ + ui->setupUi(this); +} + +CImportConfig::~CImportConfig() +{ + delete ui; +} + +void CImportConfig::on_pushButton_importpath_clicked() +{ + QString dirpath = QFileDialog::getExistingDirectory(this, QStringLiteral("选择目录"), "./", QFileDialog::ShowDirsOnly); + if(dirpath.isEmpty()) dirpath = QDir::currentPath(); + ui->lineEdit_filepath->setText(dirpath + "/"); + import_path = dirpath; +} + + +void CImportConfig::on_pushButton_confirm_clicked() +{ + if(ui->lineEdit_filepath->text() == ""){ + QMessageBox::warning(this,tr("提示"),tr("请选择导入文件路径!")); + return; + } + +#ifdef Q_OS_WIN32 + QString copy_path = QCoreApplication::applicationDirPath() + "\\config\\copy\\"; +#endif +#ifdef Q_OS_LINUX + QString copy_path = QCoreApplication::applicationDirPath() + "/config/copy/"; +#endif + QDir copyDir(copy_path); + + // 创建目标文件夹 + if (!copyDir.mkpath(".")) { + qDebug() << "无法创建目标文件夹"; + return; + } + copyDirectory(import_path, copy_path); + + QFile fileMAC(copy_path+"macbackup"); + if (!fileMAC.open(QIODevice::ReadOnly | QIODevice::Text)) { + qDebug() << "无法打开文件"; + return; + } + QTextStream in(&fileMAC); + QString oldMAC= ""; + while (!in.atEnd()) { + oldMAC = in.readLine(); + qDebug() << oldMAC; + } + fileMAC.close(); + + QFile sourceFile(copy_path + "config.db"); +// if (!sourceFile.copy(copy_path + "\\config.db")) { +// QMessageBox::question(NULL, "提示", "导入数据库失败!"); +// return; +// } + qDebug() << QSqlDatabase::drivers() << "\r\n"; + QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); + + db.setDatabaseName(copy_path + "config.db"); + if (!db.open()) + { + qDebug() << "Error: Failed to connect database." << database.lastError(); + return ; + } + + QString strSql = QString("update t_ChannelSetting SET channelId = '%1' || SUBSTR(channelId, 13),dataWatchNo='%2';").arg(MAC).arg(MAC); + ExeSqlData(strSql); + strSql = QString("update t_ChannelSetting SET pairChannelId = '%1' || SUBSTR(channelId, 13) where pairChannelId <> '' AND pairChannelId <> 'NONE' ;").arg(MAC); + ExeSqlData(strSql); + strSql = QString("update t_ChannelSetting SET speedRefChannelId = '%1' || SUBSTR(channelId, 13) where speedRefChannelId <> '' AND pairChannelId <> 'NONE';").arg(MAC); + ExeSqlData(strSql); + strSql = QString("update t_DeviceInfo SET MAC = '%1',IP = '%2' ;").arg(MAC).arg(IP); + ExeSqlData(strSql); + strSql = QString("update t_TriggerConfig SET ChannelID = '%1' || SUBSTR(ChannelID, 13) ;").arg(MAC); + ExeSqlData(strSql); + strSql = QString("update t_WorkConditionChannels SET ChannelId = '%1' || SUBSTR(ChannelId, 13) where ChannelId <> '';").arg(MAC); + ExeSqlData(strSql); + strSql = QString("update t_WorkConditionRules SET ChannelId = '%1' || SUBSTR(ChannelId, 13) ;").arg(MAC); + ExeSqlData(strSql); + strSql = QString("update t_UnitConfiguration SET ChannelId = '%1' || SUBSTR(ChannelId, 13) ;").arg(MAC); + ExeSqlData(strSql); + + db.close(); + + QString fileName = copy_path + "Graph1.json"; + QString value; + QFile file(fileName); + file.open(QIODevice::ReadWrite | QIODevice::Text); + value = file.readAll(); + file.resize(0); + file.write(value.toUtf8()); + value.replace(oldMAC,MAC); + value = file.readAll(); + file.close(); + + + + QString fileName2 = copy_path + "Graph2.json"; + QFile file2(fileName2); + file2.open(QIODevice::ReadWrite | QIODevice::Text); + value = file2.readAll(); + file2.resize(0); + value.replace(oldMAC,MAC); + file2.write(value.toUtf8()); + file2.close(); + + QString ChannelSettings = copy_path + "ChannelSettings.json"; + QFile fileChannelSettings(ChannelSettings); + fileChannelSettings.open(QIODevice::ReadWrite | QIODevice::Text); + value = fileChannelSettings.readAll(); + fileChannelSettings.resize(0); + value.replace(oldMAC,MAC); + fileChannelSettings.write(value.toUtf8()); + fileChannelSettings.close(); + + QString UnitConfigurations = copy_path + "UnitConfigurations.json"; + QFile fileUnitConfigurations(UnitConfigurations); + fileUnitConfigurations.open(QIODevice::ReadWrite | QIODevice::Text); + value = fileUnitConfigurations.readAll(); + fileUnitConfigurations.resize(0); + value.replace(oldMAC,MAC); + fileUnitConfigurations.write(value.toUtf8()); + fileUnitConfigurations.close(); + + + QString TriggerSettings = copy_path + "TriggerSettings.json"; + QFile fileTriggerSettings(TriggerSettings); + fileTriggerSettings.open(QIODevice::ReadWrite | QIODevice::Text); + value = fileTriggerSettings.readAll(); + fileTriggerSettings.resize(0); + value.replace(oldMAC,MAC); + fileTriggerSettings.write(value.toUtf8()); + fileTriggerSettings.close(); + + +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "UnitWorkConditionsInfo.json", copy_path + "UnitWorkConditionsInfo.json"); +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "UnitParameters.json", copy_path + "UnitParameters.json"); +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "ServerConfig.json", copy_path + "ServerConfig.json"); +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "NetWorkConfig.json", copy_path + "NetWorkConfig.json"); +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "ModbusConfig.json", copy_path + "ModbusConfig.json"); +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "TcpConfig.json", copy_path + "TcpConfig.json"); +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "UnitBoardsInfo.json", copy_path + "UnitBoardsInfo.json"); +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "ZeroDrift.json", copy_path + "ZeroDrift.json"); +// //copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "UnitBoardsInfo.json", copy_path + "UnitBoardsInfo.json"); +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "ConfidenceDegree.json", copy_path + "ConfidenceDegree.json"); +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "TriggerConfig.json", copy_path + "TriggerConfig.json"); +// copyFile(QCoreApplication::applicationDirPath() + "\\config\\" + "config.ini", copy_path + "config.ini"); + + g_SqliteDB->CloseDataBase(); + +#ifdef Q_OS_WIN32 + copyDirectory(copy_path, QCoreApplication::applicationDirPath() + "\\config\\"); +#endif +#ifdef Q_OS_LINUX + copyDirectory(copy_path, QCoreApplication::applicationDirPath() + "/config/"); +#endif + QMessageBox::information(this,tr("导入"),tr("导入成功")); + // 如果目标文件夹已存在,则删除它 + QDir copyDir2(copy_path); + if (copyDir2.exists()) { + copyDir2.removeRecursively(); + } + + +#ifdef Q_OS_WIN32 + QString fileNameInfo = QCoreApplication::applicationDirPath() + "\\config\\UnitWorkConditionsInfo.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameInfo = QCoreApplication::applicationDirPath() + "/config/UnitWorkConditionsInfo.json"; +#endif + + QString strURL = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitWorkConditionsInfo.json"); +// g_FtpClient->SetServerInfo(strURL); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(fileNameInfo,"UnitWorkConditionsInfo.json"); + g_FtpClient->uploadFile(strURL,fileNameInfo,"UnitWorkConditionsInfo.json"); +// Uploader u; +// u.start(strURL,fileNameInfo,"UnitWorkConditionsInfo.json"); + + +#ifdef Q_OS_WIN32 + QString fileNameUnit = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameUnit = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations.json"; +#endif + + QString str2 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitConfigurations.json"); +// g_FtpClient->SetServerInfo(str2); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(fileNameUnit,"UnitConfigurations.json"); + g_FtpClient->uploadFile(str2,fileNameUnit,"UnitConfigurations.json"); +#ifdef Q_OS_WIN32 + QString fileNameUnit2 = QCoreApplication::applicationDirPath() + "\\config\\UnitConfigurations2.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameUnit2 = QCoreApplication::applicationDirPath() + "/config/UnitConfigurations2.json"; +#endif + + QString str22 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitConfigurations2.json"); +// g_FtpClient->SetServerInfo(str22); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(fileNameUnit2,"UnitConfigurations2.json"); + g_FtpClient->uploadFile(str22,fileNameUnit2,"UnitConfigurations2.json"); + +#ifdef Q_OS_WIN32 + QString fileNameTri = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameTri = QCoreApplication::applicationDirPath() + "/config/TriggerSettings.json"; +#endif + + QString str1 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("TriggerSettings.json"); +// g_FtpClient->SetServerInfo(str1); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(fileNameTri,"TriggerSettings.json"); + g_FtpClient->uploadFile(str1,fileNameTri,"TriggerSettings.json"); + +#ifdef Q_OS_WIN32 + QString fileNameTri2 = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings2.json"; +#endif +#ifdef Q_OS_LINUX + QString fileNameTri2 = QCoreApplication::applicationDirPath() + "/config/TriggerSettings2.json"; +#endif + + QString strTri2 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("TriggerSettings2.json"); +// g_FtpClient->SetServerInfo(strTri2); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(fileNameTri2,"TriggerSettings2.json"); + g_FtpClient->uploadFile(strTri2,fileNameTri2,"TriggerSettings2.json"); + +#ifdef Q_OS_WIN32 + QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitBoardsInfo.json"; +#endif +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/UnitBoardsInfo.json"; +#endif + QString str = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("UnitBoardsInfo.json"); +// g_FtpClient->SetServerInfo(str); +// g_FtpClient->SetUserInfo("root","@#cidw!@123456"); +// g_FtpClient->UpLoadFile(name,"UnitBoardsInfo.json"); + g_FtpClient->uploadFile(str,name,"UnitBoardsInfo.json"); + qApp->exit(0); + QProcess::startDetached(qApp->applicationFilePath(), QStringList()); +} + +int CImportConfig::ExeSqlData(QString& strSql) +{ + QSqlQuery sql_query; + int iRet = -1; + qDebug() << "strSql" << strSql << endl; + if(!sql_query.exec(strSql)) + { + qDebug() << sql_query.lastError(); + } + else + { + while(sql_query.next()) + { + iRet = sql_query.value(0).toInt(); + } + } + return iRet; +} + +bool CImportConfig::copyFile(const QString &sourceFile, const QString &destinationFile) +{ + QFile srcFile(sourceFile); + QFile dstFile(destinationFile); + + if (!srcFile.exists()) { + qDebug() << "Source file does not exist:" << sourceFile; + return false; + } + + if (!srcFile.open(QIODevice::ReadOnly)) { + qDebug() << "Unable to open source file for reading:" << sourceFile; + return false; + } + + if (!dstFile.open(QIODevice::WriteOnly)) { + srcFile.close(); + qDebug() << "Unable to open destination file for writing:" << destinationFile; + return false; + } + + dstFile.write(srcFile.readAll()); + srcFile.close(); + dstFile.close(); + return true; +} + +bool CImportConfig::copyDirectory(const QString &sourceDir, const QString &destinationDir) { + QDir srcDir(sourceDir); + QDir destDir(destinationDir); + + // 复制文件 + foreach (const QFileInfo &fileInfo, srcDir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot)) { + QString fileName = fileInfo.fileName(); + QString srcFilePath = srcDir.absoluteFilePath(fileName); + QString destFilePath = destDir.absoluteFilePath(fileName); + //qDebug() << "srcFilePath" << srcFilePath << destFilePath < +#include +#include +#include +#include "global.h" +#include "ftpclient.h" +namespace Ui { +class CImportConfig; +} + +class CImportConfig : public QWidget +{ + Q_OBJECT + +public: + explicit CImportConfig(QWidget *parent = nullptr); + ~CImportConfig(); + +private slots: + void on_pushButton_importpath_clicked(); + + void on_pushButton_confirm_clicked(); + +private: + Ui::CImportConfig *ui; + QString import_path; + QSqlDatabase database; + int ExeSqlData(QString& strSql); + bool copyFile(const QString &sourceFile, const QString &destinationFile); + bool copyDirectory(const QString &sourceDir, const QString &destinationDir); +}; + +#endif // IMPORTCONFIG_H diff --git a/ImportConfig.ui b/ImportConfig.ui new file mode 100644 index 0000000..a04dd74 --- /dev/null +++ b/ImportConfig.ui @@ -0,0 +1,150 @@ + + + CImportConfig + + + + 0 + 0 + 713 + 168 + + + + 配置导入 + + + font: 10pt "黑体"; +color: rgb(27, 30, 35); + + + + + + + + + 请填写导入信息 + + + Qt::AlignCenter + + + + + + + + + + + + + + + + + false + + + + + + + + 96 + 28 + + + + + 96 + 28 + + + + #pushButton_importpath { border-image: url(:/image/Btn/normal_Btn.png); + color:#1f5188 } +#pushButton_importpath:hover { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_importpath:pressed { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_importpath:checked { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} + + + 导入路径 + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 96 + 28 + + + + + 96 + 28 + + + + #pushButton_confirm { border-image: url(:/image/Btn/normal_Btn.png); + color:#1f5188 } +#pushButton_confirm:hover { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_confirm:pressed { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_confirm:checked { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} + + + 确认 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + diff --git a/Mqttclient.cpp b/Mqttclient.cpp index 817d066..225d376 100644 --- a/Mqttclient.cpp +++ b/Mqttclient.cpp @@ -1,4 +1,4 @@ -#include "MqttClient.h" +#include "Mqttclient.h" MqttClient::MqttClient(QObject *parent) : QObject(parent) { diff --git a/NTPServerConfig.cpp b/NTPServerConfig.cpp index 11a3115..2cc90c4 100644 --- a/NTPServerConfig.cpp +++ b/NTPServerConfig.cpp @@ -82,7 +82,13 @@ void CNTPServerConfig::on_pushButton_manual_clicked() void CNTPServerConfig::Init() { - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json"; + +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/ServerConfig.json"; +#endif if(!fileName.isEmpty()) { qDebug() << "打开" << fileName ; @@ -136,7 +142,13 @@ void CNTPServerConfig::slotReplyStatus(int result) QJsonDocument jsonDoc; jsonDoc.setObject(m_ServerObject); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json"; + +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/ServerConfig.json"; +#endif QFile file(fileName); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); @@ -164,7 +176,13 @@ void CNTPServerConfig::on_radioButton_switch_clicked() QJsonDocument jsonDoc; jsonDoc.setObject(m_ServerObject); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json"; + +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/ServerConfig.json"; +#endif QFile file(fileName); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); diff --git a/OtherConfig.cpp b/OtherConfig.cpp index 1a9def5..287c9fb 100644 --- a/OtherConfig.cpp +++ b/OtherConfig.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "ftpclient.h" COtherConfig::COtherConfig(QWidget *parent) : @@ -18,6 +19,7 @@ COtherConfig::COtherConfig(QWidget *parent) : ui->lineEdit_Trigger->setValidator(Validator); ui->lineEdit_peaktopeak->setValidator(Validator); + ui->radioButton_closeIO->setChecked(1); LoadWorkingConditionConfig(); } @@ -29,7 +31,13 @@ COtherConfig::~COtherConfig() void COtherConfig::LoadWorkingConditionConfig() { - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerConfig.json"; + +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerConfig.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/TriggerConfig.json"; +#endif if(!fileName.isEmpty()) { qDebug() << "打开" << fileName ; @@ -56,7 +64,13 @@ void COtherConfig::LoadWorkingConditionConfig() } } - fileName = QCoreApplication::applicationDirPath() + "\\config\\ConfidenceDegree.json"; +#ifdef Q_OS_WIN32 + fileName = QCoreApplication::applicationDirPath() + "\\config\\ConfidenceDegree.json"; +#endif +#ifdef Q_OS_LINUX + fileName = QCoreApplication::applicationDirPath() + "/config/ConfidenceDegree.json"; +#endif + if(!fileName.isEmpty()) { qDebug() << "打开" << fileName ; @@ -81,9 +95,14 @@ void COtherConfig::LoadWorkingConditionConfig() } //读取ini - QSettings settingsread(QCoreApplication::applicationDirPath() + "\\config\\config.ini",QSettings::IniFormat); + +#ifdef Q_OS_WIN32 + QSettings settingsread(QCoreApplication::applicationDirPath() + "\\config\\config.ini",QSettings::IniFormat); +#endif +#ifdef Q_OS_LINUX + QSettings settingsread(QCoreApplication::applicationDirPath() + "/config/config.ini",QSettings::IniFormat); +#endif settingsread.setIniCodec(QTextCodec::codecForName("UTF8")); - g_strVersion = settingsread.value("main/Version").toString(); g_strProject = settingsread.value("main/Project").toString(); QTextCodec* codec = QTextCodec::codecForName("UTF-8");//添加编码格式 @@ -97,14 +116,20 @@ void COtherConfig::LoadWorkingConditionConfig() for (int i = 0; i < g_ChannelBaseInfo.size(); i++) { if(g_ChannelBaseInfo[i].channelType == "TACHOMETER"){ ui->comboBox_ch->addItem(g_ChannelBaseInfo[i].channelName); - }else{ + }else if(g_ChannelBaseInfo[i].channelType == "PROXIMETER"){ ui->comboBox_ch2->addItem(g_ChannelBaseInfo[i].channelName); } } ui->comboBox_logic->addItem("与"); ui->comboBox_logic->addItem("或"); - fileName = QCoreApplication::applicationDirPath() + "\\config\\ZeroDrift.json"; +#ifdef Q_OS_WIN32 + fileName = QCoreApplication::applicationDirPath() + "\\config\\ZeroDrift.json"; +#endif +#ifdef Q_OS_LINUX + fileName = QCoreApplication::applicationDirPath() + "/config/ZeroDrift.json"; +#endif + if(!fileName.isEmpty()) { qDebug() << "打开" << fileName ; @@ -168,7 +193,13 @@ void COtherConfig::on_pushButto_Trigger_clicked() return; } m_strTriggerTime = str; - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerConfig.json"; + +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerConfig.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/TriggerConfig.json"; +#endif if(!fileName.isEmpty()) { qDebug() << "打开" << fileName ; @@ -196,7 +227,13 @@ void COtherConfig::on_pushButto_Trigger_clicked() } QJsonDocument jsonDoc; jsonDoc.setObject(jsonObject); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerConfig.json"; +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerConfig.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/TriggerConfig.json"; +#endif + file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); file.close(); @@ -240,7 +277,13 @@ inline QString UTF82GBK(QByteArray &inStr) void COtherConfig::on_pushButton_main_clicked() { - QSettings *settings = new QSettings(QCoreApplication::applicationDirPath() + "\\config\\config.ini", QSettings::IniFormat); +#ifdef Q_OS_WIN32 + QSettings *settings = new QSettings(QCoreApplication::applicationDirPath() + "\\config\\config.ini", QSettings::IniFormat); +#endif +#ifdef Q_OS_LINUX + QSettings *settings = new QSettings(QCoreApplication::applicationDirPath() + "/config/config.ini", QSettings::IniFormat); +#endif + settings->setIniCodec(QTextCodec::codecForName("UTF-8")); settings->setValue("main/Version", ui->textEdit_version->toPlainText()); @@ -311,7 +354,13 @@ void COtherConfig::on_radioButton_open_clicked() ZeroDriftObj["ref_channel"] = ref_channelObj; QJsonDocument jsonDoc; jsonDoc.setObject(ZeroDriftObj); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ZeroDrift.json"; +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ZeroDrift.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/ZeroDrift.json"; +#endif + QFile file(fileName); file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); @@ -335,7 +384,13 @@ void COtherConfig::on_radioButton_open_clicked() void COtherConfig::on_radioButton_close_clicked() { - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ZeroDrift.json"; + +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ZeroDrift.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ZeroDrift.json"; +#endif if(!fileName.isEmpty()) { qDebug() << "打开" << fileName ; @@ -357,7 +412,12 @@ void COtherConfig::on_radioButton_close_clicked() QJsonDocument jsonDoc; jsonDoc.setObject(ZeroDriftObj); +#ifdef Q_OS_WIN32 QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ZeroDrift.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ZeroDrift.json"; +#endif file.open(QIODevice::WriteOnly); file.write(jsonDoc.toJson()); file.close(); @@ -377,3 +437,39 @@ void COtherConfig::on_radioButton_close_clicked() ui->lineEdit_peaktopeak->setEnabled(1); } + +void COtherConfig::on_radioButton_openIO_clicked() +{ + bool ok; + QString password = QInputDialog::getText(this, + "输入密码", + "Enter Password:", + QLineEdit::Password, + "", + &ok); + if(!ok) { + ui->radioButton_openIO->setChecked(0); + ui->radioButton_closeIO->setChecked(1); + return; + } +#ifdef Q_OS_WIN32 + QSettings settingsread(QCoreApplication::applicationDirPath() + "\\config\\config.ini",QSettings::IniFormat); +#endif +#ifdef Q_OS_LINUX + QSettings settingsread(QCoreApplication::applicationDirPath() + "/config/config.ini",QSettings::IniFormat); +#endif + if(password == settingsread.value("main/passwd").toString()) + { + g_strIOControl = "1"; + }else{ + QMessageBox::information(this, QStringLiteral("提示"), "请输入正确的密码!"); + } + +} + + +void COtherConfig::on_radioButton_closeIO_clicked() +{ + g_strIOControl = "0"; +} + diff --git a/OtherConfig.h b/OtherConfig.h index ade5231..ec1575e 100644 --- a/OtherConfig.h +++ b/OtherConfig.h @@ -28,6 +28,10 @@ private slots: void on_radioButton_close_clicked(); void slotNetMgr(QString sAddr,const QVariant& msg); + void on_radioButton_openIO_clicked(); + + void on_radioButton_closeIO_clicked(); + private: Ui::COtherConfig *ui; diff --git a/OtherConfig.ui b/OtherConfig.ui index 0fc1b3c..0f08c26 100644 --- a/OtherConfig.ui +++ b/OtherConfig.ui @@ -411,6 +411,45 @@ + + + + 10 + 210 + 231 + 61 + + + + 继电器开关控制 + + + + + 10 + 30 + 89 + 16 + + + + + + + + + + 120 + 30 + 89 + 16 + + + + + + + diff --git a/QMyTableViewBtnDelegate.cpp b/QMyTableViewBtnDelegate.cpp index cd56fbc..e4f830d 100644 --- a/QMyTableViewBtnDelegate.cpp +++ b/QMyTableViewBtnDelegate.cpp @@ -1,4 +1,4 @@ -#include "qmytableviewbtndelegate.h" +#include "QMyTableViewBtnDelegate.h" #include #include diff --git a/RealTimeAlarm.cpp b/RealTimeAlarm.cpp index c537771..4b08ee8 100644 --- a/RealTimeAlarm.cpp +++ b/RealTimeAlarm.cpp @@ -22,7 +22,7 @@ CRealTimeAlarm::CRealTimeAlarm(QWidget *parent) : model->setHorizontalHeaderLabels(headerList); model->setColumnCount(headerList.size()); ui->tableView->setModel(model); - ui->tableView->setColumnWidth(2, 300); + ui->tableView->setColumnWidth(2, 450); ui->tableView->setColumnWidth(3, 200); ui->tableView->setAlternatingRowColors(true); @@ -81,11 +81,37 @@ void CRealTimeAlarm::initTable() }else if(m_vecTriggerAlarmStatusInfo[i].triggerLevel == "2"){ triggerLevel = "危险"; } - + QString strFeatureName = ""; + if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("MinValues")) + strFeatureName = "最小值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("MaxValues")) + strFeatureName = "最大值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("DCValues")) + strFeatureName = "偏置电压/Gap"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("RMSValues")) + strFeatureName = "有效值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("DiagnosisPk2Pk")) + strFeatureName = "诊断峰峰值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("IntegratRMS")) + strFeatureName = "有效值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("IntegratPk2Pk")) + strFeatureName = "积分峰峰值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("SpeedProfileSpeed")) + strFeatureName = "转速"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("IntegratPk2Pk/2")) + strFeatureName = "峰值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("DiagnosisPeak")) + strFeatureName = "峰值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("MonitorPk2Pk")) + strFeatureName = "监测保护峰峰值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("InvertDanger") ) + strFeatureName = "反时限危险值"; + else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("InvertAlarm")) + strFeatureName = "反时限警报值"; if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("Over")){ - triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + "高于" + triggerLevel + "值"; + triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + strFeatureName+ "-" + "高于" + triggerLevel + "值"; }else if(m_vecTriggerAlarmStatusInfo[i].triggerEventName.contains("Under")){ - triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + "低于" + triggerLevel + "值"; + triggerEventName = m_vecTriggerAlarmStatusInfo[i].channelName + "-" + strFeatureName+ "-" + "低于" + triggerLevel + "值"; } strRowItem << i + 1 << triggerLevel << triggerEventName << TStr; @@ -499,7 +525,13 @@ void CRealTimeAlarm::Details(const QModelIndex &index) strFileName = strFileName.left(strFileName.size()-1); QStringList strList = strFileName.split("/"); +#ifdef Q_OS_WIN32 QString strPath = QCoreApplication::applicationDirPath() + "\\dat\\" + strList[5]; +#endif +#ifdef Q_OS_LINUX + QString strPath = QCoreApplication::applicationDirPath() + "/dat/" + strList[5]; +#endif + QFile file(strPath); customLogMessageHandler(QtDebugMsg, "RealTimeAlarm:" + strPath); g_LocalFile = strPath; diff --git a/SlowSpeedChannelSetting.cpp b/SlowSpeedChannelSetting.cpp index 7d6e327..15a16fc 100644 --- a/SlowSpeedChannelSetting.cpp +++ b/SlowSpeedChannelSetting.cpp @@ -2,6 +2,7 @@ #include "ui_SlowSpeedChannelSetting.h" #include #include "CopyChannelSetting.h" +#include "CustomFilter.h" CSlowSpeedChannelSetting::CSlowSpeedChannelSetting(QWidget *parent) : QWidget(parent), @@ -35,6 +36,7 @@ CSlowSpeedChannelSetting::CSlowSpeedChannelSetting(QWidget *parent) : m_DisPlayerList << "平均值" << "最小值" << "最大值"; ui->comboBox_defaultDisplay->clear(); ui->comboBox_defaultDisplay->addItems(m_DisPlayerList); + ui->pushButton_CustomFilter->setVisible(false); } CSlowSpeedChannelSetting::~CSlowSpeedChannelSetting() @@ -58,9 +60,11 @@ void CSlowSpeedChannelSetting::displayChannelSetting() } if(channelSetting.sensorType == "PULSE_CURRENT"){ ui->comboBox_channelType->addItem("气隙"); + ui->pushButton_CustomFilter->setVisible(true); } if(channelSetting.sensorType == "AIRGAP"){ ui->comboBox_channelType->addItem("高速电流"); + ui->pushButton_CustomFilter->setVisible(true); } ui->RPMComBox->clear(); @@ -241,10 +245,10 @@ void CSlowSpeedChannelSetting::on_comboBox_channelType_currentTextChanged(const } } -void CSlowSpeedChannelSetting::slotSetChannelData(QStringList& listChannelName) +void CSlowSpeedChannelSetting::slotCopyChannelData(QStringList& listChannelID) { - qDebug() << listChannelName << endl; - for (int i = 0; i < listChannelName.size(); i++) + qDebug() << listChannelID << endl; + for (int i = 0; i < listChannelID.size(); i++) { QString strUpdateSql = QString(" set ChUnitCoeff = '%1' , ChUnitDot = %2,SensorICP = '%3', \ SensorType = '%4',bearingClearance='%5',bearingStartPosition='%6',\ @@ -261,7 +265,7 @@ void CSlowSpeedChannelSetting::slotSetChannelData(QStringList& listChannelName) startBrands='%44',stopBrands='%45',tachAutoTach='%46',tachTriggerEdge='%47',tachTriggerHysteresis=%48,\ tachTriggerPerRev='%49',tachTriggerVoltageLevel='%50',thermalCoupleType = '%51',xFullScalePosition='%52',\ xProcessVariableName='%53',xZeroScalePosition='%54',zeroScalePosition='%55',speedRefChannelName = '%56',\ - defaultDisplay = '%57' ,confidenceDegree=%58,sectionNum=%59 where channelName = '%60'").\ + defaultDisplay = '%57' ,confidenceDegree=%58,sectionNum=%59 where channelId = '%60'").\ arg(channelSetting.ChUnitCoeff).arg(channelSetting.ChUnitDot).arg(channelSetting.sensorICP).\ arg(channelSetting.sensorType).arg(channelSetting.bearingClearance).arg(channelSetting.bearingStartPosition).\ arg(channelSetting.channelIntDiff).arg(channelSetting.channelRMSPkPk2Pk).arg(channelSetting.channelSensorType).\ @@ -281,7 +285,7 @@ void CSlowSpeedChannelSetting::slotSetChannelData(QStringList& listChannelName) arg(channelSetting.tachTriggerHysteresis).arg(channelSetting.tachTriggerPerRev).arg(channelSetting.tachTriggerVoltageLevel).\ arg(channelSetting.thermalCoupleType).arg(channelSetting.xFullScalePosition).arg(channelSetting.xProcessVariableName).arg(channelSetting.xZeroScalePosition).\ arg(channelSetting.zeroScalePosition).arg(channelSetting.speedRefChannelName).arg(channelSetting.defaultDisplay).\ - arg(channelSetting.confidenceDegree).arg(channelSetting.sectionNum).arg(listChannelName[i]); + arg(channelSetting.confidenceDegree).arg(channelSetting.sectionNum).arg(listChannelID[i]); QString tableName = "t_ChannelSetting "; g_SqliteDB->UpdateDataSql(tableName,strUpdateSql); @@ -292,10 +296,21 @@ void CSlowSpeedChannelSetting::on_pushButton_copy_clicked() QString strWhere = QString(" sensorModuleNo = %1 and channelId <> '%2' ").arg(channelSetting.sensorModuleNo).arg(channelSetting.channelId); QVector copyChannel = g_SqliteDB->GetDataMultiLine("t_ChannelSetting","*",strWhere); CopyChannelSetting *dialog = new CopyChannelSetting(); - connect(dialog, SIGNAL(sgSetChannelData(QStringList&)), this, SLOT(slotSetChannelData(QStringList&))); + connect(dialog, SIGNAL(sgCopyChannelData(QStringList&)), this, SLOT(slotCopyChannelData(QStringList&))); dialog->copyChannel = copyChannel; dialog->setWindowModality(Qt::ApplicationModal); dialog->displayCopyChannel(); dialog->show(); } + +void CSlowSpeedChannelSetting::on_pushButton_CustomFilter_clicked() +{ + CustomFilter *pCustomFilter = new CustomFilter(); + pCustomFilter->channel_ID = channelSetting.channelId; + pCustomFilter->vibrate_channel = 1; + pCustomFilter->setWindowModality(Qt::ApplicationModal); + pCustomFilter->show(); + pCustomFilter->getfilterInfo(); +} + diff --git a/SlowSpeedChannelSetting.h b/SlowSpeedChannelSetting.h index fcbebb7..2dad4d2 100644 --- a/SlowSpeedChannelSetting.h +++ b/SlowSpeedChannelSetting.h @@ -28,8 +28,10 @@ private slots: void on_comboBox_channelType_currentTextChanged(const QString &arg1); void on_pushButton_copy_clicked(); + void on_pushButton_CustomFilter_clicked(); + public slots: - void slotSetChannelData(QStringList&); + void slotCopyChannelData(QStringList&); private: Ui::CSlowSpeedChannelSetting *ui; diff --git a/SlowSpeedChannelSetting.ui b/SlowSpeedChannelSetting.ui index 7f870f2..13e50ec 100644 --- a/SlowSpeedChannelSetting.ui +++ b/SlowSpeedChannelSetting.ui @@ -384,7 +384,7 @@ color: rgb(27, 30, 35); - 0 + 150 0 @@ -398,6 +398,48 @@ color: rgb(27, 30, 35); + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 96 + 28 + + + + + 96 + 28 + + + + #pushButton_CustomFilter { border-image: url(:/image/Btn/normal_Btn.png); + color:#1f5188 } +#pushButton_CustomFilter:hover { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_CustomFilter:pressed { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_CustomFilter:checked { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} + + + 滤波设置 + + + diff --git a/TerminalInfo.cpp b/TerminalInfo.cpp index 3be50d8..5faaf21 100644 --- a/TerminalInfo.cpp +++ b/TerminalInfo.cpp @@ -4,6 +4,8 @@ #include #include "ftpclient.h" #include "CopyDatFile.h" +#include "Backup.h" +#include "ImportConfig.h" CTerminalInfo::CTerminalInfo(QWidget *parent) : QWidget(parent), @@ -53,6 +55,7 @@ CTerminalInfo::CTerminalInfo(QWidget *parent) : double cpuUserUse = 10,memoryUse = 20,hardDiskUse = 30,temperature = 60; QString updateTime = "1583487670"; + ui->label_Version_GUI->setText(g_strVersion); //UpdateChart(cpuUserUse,memoryUse,memoryUse,temperature,updateTime); @@ -209,7 +212,7 @@ void CTerminalInfo::slotNetMgr(QString sAddr, const QVariant &msg) ui->label_Version->setText(sysObj["softVersion"].toString()); ui->label_Type->setText(sysObj["deviceType"].toString()); ui->label_SerialNo->setText(sysObj["serialNumber"].toString()); - ui->label_Address->setText(sysObj["dataWatchIpAddress"].toString()); + //ui->label_Address->setText(sysObj["dataWatchIpAddress"].toString()); } } } @@ -291,8 +294,6 @@ void CTerminalInfo::on_pushButton_Update_clicked() curIndex = 0; else if(text == "后端主程序") curIndex = 1; - else if(text == "后端辅助程序") - curIndex = 2; g_FtpClient->UpLoadFile(filepath,FileName,curIndex); } @@ -305,3 +306,22 @@ void CTerminalInfo::on_pushButtonCopy_clicked() copyDatDialog->show(); } +void CTerminalInfo::on_pushButton_export_clicked() +{ + CBackup *BackupDialog = new CBackup(); + BackupDialog->setWindowModality(Qt::ApplicationModal); + BackupDialog->setAttribute(Qt::WA_DeleteOnClose); + BackupDialog->setWindowFlags(BackupDialog->windowFlags() &~ Qt::WindowMaximizeButtonHint); + BackupDialog->show(); +} + + +void CTerminalInfo::on_pushButton_import_clicked() +{ + CImportConfig *ImportConfigDialog = new CImportConfig(); + ImportConfigDialog->setWindowModality(Qt::ApplicationModal); + ImportConfigDialog->setAttribute(Qt::WA_DeleteOnClose); + ImportConfigDialog->setWindowFlags(ImportConfigDialog->windowFlags() &~ Qt::WindowMaximizeButtonHint); + ImportConfigDialog->show(); +} + diff --git a/TerminalInfo.h b/TerminalInfo.h index 64ca4ae..5d8222b 100644 --- a/TerminalInfo.h +++ b/TerminalInfo.h @@ -34,6 +34,10 @@ private slots: void on_pushButtonCopy_clicked(); + void on_pushButton_export_clicked(); + + void on_pushButton_import_clicked(); + private: Ui::CTerminalInfo *ui; diff --git a/TerminalInfo.ui b/TerminalInfo.ui index ed5fa58..69ec59e 100644 --- a/TerminalInfo.ui +++ b/TerminalInfo.ui @@ -112,16 +112,19 @@ - 80 + 100 0 - 80 + 100 16777215 + + Qt::RightToLeft + 在线状态: @@ -148,13 +151,13 @@ - 80 + 100 0 - 80 + 100 16777215 @@ -181,13 +184,13 @@ - 80 + 100 0 - 80 + 100 16777215 @@ -214,13 +217,13 @@ - 80 + 100 0 - 80 + 100 16777215 @@ -247,13 +250,13 @@ - 80 + 100 0 - 80 + 100 16777215 @@ -280,13 +283,13 @@ - 80 + 100 0 - 80 + 100 16777215 @@ -348,13 +351,13 @@ - 80 + 100 0 - 80 + 100 16777215 @@ -381,13 +384,13 @@ - 80 + 100 0 - 80 + 100 16777215 @@ -414,13 +417,13 @@ - 80 + 100 0 - 80 + 100 16777215 @@ -447,13 +450,13 @@ - 80 + 100 0 - 80 + 100 16777215 @@ -480,13 +483,13 @@ - 80 + 100 0 - 80 + 100 16777215 @@ -513,18 +516,18 @@ - 80 + 100 0 - 80 + 100 16777215 - 终端地址: + 数据配置: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -532,12 +535,76 @@ - + + + + 96 + 28 + + + + + 96 + 28 + + + + #pushButton_import { border-image: url(:/image/Btn/normal_Btn.png); + color:#1f5188 } +#pushButton_import:hover { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_import:pressed { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_import:checked { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} + - - - + 导入 + + + + + 96 + 28 + + + + + 96 + 28 + + + + #pushButton_export { border-image: url(:/image/Btn/normal_Btn.png); + color:#1f5188 } +#pushButton_export:hover { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_export:pressed { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} +#pushButton_export:checked { border-image: url(:/image/Btn/normal_Btn_p.png); + color:#ffffff} + + + 导出 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -546,13 +613,13 @@ - 80 + 100 0 - 80 + 100 16777215 diff --git a/TriggerConfig.cpp b/TriggerConfig.cpp index 767d683..7953d38 100644 --- a/TriggerConfig.cpp +++ b/TriggerConfig.cpp @@ -260,8 +260,8 @@ void CTriggerConfig::on_comboBox_channelConfig_currentTextChanged(const QString }else if(g_ChannelBaseInfo[ii].channelType == "ACCELEROMETER"){ LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ - model->setRowCount(4); - for (int i = 0; i < 4; i++) { + model->setRowCount(6); + for (int i = 0; i < 6; i++) { model->setItem(i, 2, add_checkBox_model(0)); model->setItem(i, 3, add_checkBox_model(0)); model->setItem(i, 4, add_checkBox_model(0)); @@ -275,6 +275,8 @@ void CTriggerConfig::on_comboBox_channelConfig_currentTextChanged(const QString model->setData(model->index(1,1,QModelIndex()),"峰值"); model->setData(model->index(2,1,QModelIndex()),"速度峰值"); model->setData(model->index(3,1,QModelIndex()),"速度有效值"); + model->setData(model->index(4,1,QModelIndex()),"反时限警报值"); + model->setData(model->index(5,1,QModelIndex()),"反时限危险值"); } @@ -283,8 +285,8 @@ void CTriggerConfig::on_comboBox_channelConfig_currentTextChanged(const QString { LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ - model->setRowCount(4); - for (int i = 0; i < 4; i++) { + model->setRowCount(6); + for (int i = 0; i < 6; i++) { model->setItem(i, 2, add_checkBox_model()); model->setItem(i, 3, add_checkBox_model()); model->setItem(i, 4, add_checkBox_model()); @@ -298,6 +300,8 @@ void CTriggerConfig::on_comboBox_channelConfig_currentTextChanged(const QString model->setData(model->index(1,1,QModelIndex()),"偏置电压/Gap"); model->setData(model->index(2,1,QModelIndex()),"监测保护峰峰值"); model->setData(model->index(3,1,QModelIndex()),"有效值"); + model->setData(model->index(4,1,QModelIndex()),"反时限警报值"); + model->setData(model->index(5,1,QModelIndex()),"反时限危险值"); } @@ -320,8 +324,8 @@ void CTriggerConfig::on_comboBox_channelConfig_currentTextChanged(const QString { LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ - model->setRowCount(4); - for (int i = 0; i < 4; i++) { + model->setRowCount(6); + for (int i = 0; i < 6; i++) { model->setItem(i, 2, add_checkBox_model()); model->setItem(i, 3, add_checkBox_model()); model->setItem(i, 4, add_checkBox_model()); @@ -335,6 +339,8 @@ void CTriggerConfig::on_comboBox_channelConfig_currentTextChanged(const QString model->setData(model->index(1,1,QModelIndex()),"峰值"); model->setData(model->index(2,1,QModelIndex()),"位移峰值"); model->setData(model->index(3,1,QModelIndex()),"位移有效值"); + model->setData(model->index(4,1,QModelIndex()),"反时限警报值"); + model->setData(model->index(5,1,QModelIndex()),"反时限危险值"); } @@ -357,8 +363,8 @@ void CTriggerConfig::on_comboBox_channelConfig_currentTextChanged(const QString LoadTriggerConfig(g_ChannelBaseInfo[ii].channelID); if(m_vecTriggerConfig.size() < 1){ - model->setRowCount(3); - for (int i = 0; i < 3; i++){ + model->setRowCount(5); + for (int i = 0; i < 5; i++){ model->setItem(i, 2, add_checkBox_model()); model->setItem(i, 3, add_checkBox_model()); model->setItem(i, 4, add_checkBox_model()); @@ -371,6 +377,8 @@ void CTriggerConfig::on_comboBox_channelConfig_currentTextChanged(const QString model->setData(model->index(0,1,QModelIndex()),"平均值"); model->setData(model->index(1,1,QModelIndex()),"最小值"); model->setData(model->index(2,1,QModelIndex()),"最大值"); + model->setData(model->index(3,1,QModelIndex()),"反时限警报值"); + model->setData(model->index(4,1,QModelIndex()),"反时限危险值"); } } @@ -480,7 +488,8 @@ void CTriggerConfig::on_pushButton_submit_clicked() QString strCol = "count(*)"; int count = g_SqliteDB->QueryData(strTableName,strCol,strWhere); if(count < 1){ - if(rowList[2] == "1" || rowList[4] == "1" || rowList[6] == "1"||rowList[8] == "1"){ + if(rowList[2] == "1" || rowList[4] == "1" || rowList[6] == "1"||rowList[8] == "1") + { QString strSql = QString(" values('%1','%2',%3,'%4','%5',%6,'%7',%8,'%9',%10,'%11',%12,'%13','%14','%15','%16','%17','%18',0) ;").\ arg(ChannelID).arg(ChannelName).arg(WorkConditonSN).arg("").arg(rowList[1]).arg(rowList[2]).arg(rowList[3]).arg(rowList[4]).arg(rowList[5]).arg(rowList[6]).\ arg(rowList[7]).arg(rowList[8]).arg(rowList[9]).arg(rowList[10]).arg(rowList[11]).arg(rowList[12]).arg(rowList[13]).arg(rowList[14]); @@ -496,7 +505,8 @@ void CTriggerConfig::on_pushButton_submit_clicked() int count = g_SqliteDB->QueryData(strTableName,strCol,strWhere); qDebug() << "count " << count << endl; if(count == 0){ - if(rowList[2] == "1" || rowList[4] == "1" || rowList[6] == "1"||rowList[8] == "1"){ + if(rowList[2] == "1" || rowList[4] == "1" || rowList[6] == "1"||rowList[8] == "1") + { QString strSql = QString(" set AlertOver = %1,AlertOverSetpoint = '%2',DangerOver = %3,DangerOverSetpoint = '%4',AlertUnder = %5,AlertUnderSetpoint = '%6',DangerUnder = %7,\ DangerUnderSetpoint = '%8',AlertTriggerStatus = '%9',DangerTriggerStatus = '%10',AlertTriggerDelay = '%11',DangerTriggerDelay = '%12',TriggerType = '%13', operate = 2 where ChannelID = '%14' and WorkConditionID = %15 and Characteristic = '%16' and operate <> 3; ").arg(rowList[2]).arg(rowList[3]).arg(rowList[4]).arg(rowList[5]).arg(rowList[6]).\ arg(rowList[7]).arg(rowList[8]).arg(rowList[9]).arg(rowList[10]).arg(rowList[11]).arg(rowList[12]).arg(rowList[13]).arg(rowList[14]).arg(ChannelID).arg(WorkConditonSN.toInt()).arg(rowList[1]); @@ -663,6 +673,10 @@ void CTriggerConfig::PushData() rowObj["triggerFeatureName"] = "DiagnosisPeak"; else if(triggerConfig[j].Characteristic == "监测保护峰峰值") rowObj["triggerFeatureName"] = "MonitorPk2Pk"; + else if(triggerConfig[j].Characteristic == "反时限危险值") + rowObj["triggerFeatureName"] = "InvertDanger"; + else if(triggerConfig[j].Characteristic == "反时限警报值") + rowObj["triggerFeatureName"] = "InvertAlarm"; QString triggerEventName = QString("%1-%2-%3").arg(rowObj["triggerFeatureName"].toString()).arg(triggerConfig[j].TriggerType).arg(triggerConfig[j].ChannelID); @@ -700,7 +714,13 @@ void CTriggerConfig::PushData() QJsonDocument jsonDoc; jsonDoc.setArray(m_channeltriggerArray); - QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; +#ifdef Q_OS_WIN32 + QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/TriggerSettings.json"; +#endif + QFile file(fileName); file.open(QIODevice::WriteOnly); @@ -743,6 +763,10 @@ void CTriggerConfig::PushData() rowObj["triggerFeatureName"] = "DiagnosisPeak"; else if(triggerConfig[j].Characteristic == "监测保护峰峰值") rowObj["triggerFeatureName"] = "MonitorPk2Pk"; + else if(triggerConfig[j].Characteristic == "反时限危险值") + rowObj["triggerFeatureName"] = "InvertDanger"; + else if(triggerConfig[j].Characteristic == "反时限警报值") + rowObj["triggerFeatureName"] = "InvertAlarm"; QString triggerEventName = QString("%1-%2-%3").arg(rowObj["triggerFeatureName"].toString()).arg(triggerConfig[j].TriggerType).arg(triggerConfig[j].ChannelID); @@ -782,7 +806,13 @@ void CTriggerConfig::PushData() QJsonDocument jsonDoc2; jsonDoc2.setArray(m_channeltriggerArray2); +#ifdef Q_OS_WIN32 QString fileName2 = QCoreApplication::applicationDirPath() + "\\config\\TriggerSettings2.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName2 = QCoreApplication::applicationDirPath() + "/config/TriggerSettings2.json"; +#endif + QFile file2(fileName2); file2.open(QIODevice::WriteOnly); diff --git a/TriggerConfig.h b/TriggerConfig.h index 3a09ece..ef5212d 100644 --- a/TriggerConfig.h +++ b/TriggerConfig.h @@ -4,7 +4,7 @@ #include #include #include "global.h" -#include "HeaderView.h" +#include "headerView.h" #include "TableHeaderView.h" #include #include diff --git a/UnitSetting.cpp b/UnitSetting.cpp index e64f9a1..54c142b 100644 --- a/UnitSetting.cpp +++ b/UnitSetting.cpp @@ -23,7 +23,13 @@ CUnitSetting::~CUnitSetting() void CUnitSetting::initReadConfig() { + +#ifdef Q_OS_WIN32 QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitParameters.json"; +#endif +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/UnitParameters.json"; +#endif QFile loadFile(name); if(!loadFile.open(QIODevice::ReadOnly)) { @@ -298,7 +304,13 @@ void CUnitSetting::PushData() qDebug() << paramsObj << endl; QJsonDocument jsonDoc; jsonDoc.setObject(paramsObj); + +#ifdef Q_OS_WIN32 QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitParameters.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/UnitParameters.json"; +#endif QFile file(fileName); file.open(QIODevice::WriteOnly); diff --git a/WaveDisplay.cpp b/WaveDisplay.cpp index ff89659..a37b3f4 100644 --- a/WaveDisplay.cpp +++ b/WaveDisplay.cpp @@ -41,8 +41,27 @@ CWaveDisPlay::CWaveDisPlay(QWidget *parent) : // container->setWindowFlag(Qt::FramelessWindowHint); // container->setWindowFlag(Qt::NoDropShadowWindowHint); - InitWindows(); + +// ui->widget_wave->xAxis->setRange(0, 1); +// ui->widget_wave->xAxis->setLabel("Fs(Hz)"); +// ui->widget_wave->yAxis->setLabel(m_ChannelUnit); +// QVector ticks; +// QVector labels; +// ticks << 1 << 2 << 3 << 4 << 5 << 6 << 7; +// labels << "USA" << "Japan" << "Germany" << "France" << "UK" << "Italy" << "Canada"; +// QVector fossilData; +// fossilData << 0.86*10.5 << 0.83*5.5 << 0.84*5.5 << 0.52*5.8 << 0.89*5.2 << 0.90*4.2 << 0.67*11.2; +// QCPBars *bars = new QCPBars(ui->widget_wave->xAxis, ui->widget_wave->yAxis); +// bars->setPen(QPen(QColor(31, 81, 136).lighter(130))); // 设置柱状图的边框颜色 +// bars->setBrush(QColor(31, 81, 136)); // 设置柱状图的画刷颜色 +// bars->setAntialiased(false); +// bars->setWidth(0.02); +// bars->setData(ticks, fossilData); +// ui->widget_wave->xAxis->setRange(0, fossilData.size()); +// on_Btn_Scales_clicked(); +// ui->widget_wave->replot(); + } CWaveDisPlay::~CWaveDisPlay() @@ -208,6 +227,7 @@ void CWaveDisPlay::ParseDataTimeWave(QJsonObject & objContent) bFlag = true; m_ListWaveData = m_WaveData.split(","); ui->widget_wave->xAxis->setLabel("Time(s)"); + ui->widget_wave->yAxis->setLabel(m_ChannelUnit); QString str = QString("wave size = %1").arg(m_ListWaveData.size()); customLogMessageHandler(QtDebugMsg,str); double gap = 0.0; @@ -290,7 +310,12 @@ void CWaveDisPlay::ParseDataFsWave(QJsonObject & objContent) ui->widget_wave->yAxis->setLabel(m_ChannelUnit); QVector x,y; - QCPGraph* graph = ui->widget_wave->addGraph(ui->widget_wave->xAxis, ui->widget_wave->yAxis); + //QCPGraph* graph = ui->widget_wave->addGraph(ui->widget_wave->xAxis, ui->widget_wave->yAxis); + QCPBars *bars = new QCPBars(ui->widget_wave->xAxis, ui->widget_wave->yAxis); + bars->setAntialiased(false); + bars->setPen(QPen(QColor(31, 81, 136).lighter(130))); // 设置柱状图的边框颜色 + bars->setBrush(QColor(31, 81, 136)); // 设置柱状图的画刷颜色 + bars->setWidth(0.02); float gap = 0; for(int i = 0; i < m_ListWaveData.size();i++){ x.push_back(gap); @@ -302,7 +327,8 @@ void CWaveDisPlay::ParseDataFsWave(QJsonObject & objContent) } y[0] = 0; //qDebug() << "x" <setData(x,y); + //graph->setData(x,y); + bars->setData(x, y); ui->widget_wave->xAxis->setRange(0, y.size()); on_Btn_Scales_clicked(); ui->widget_wave->replot(); @@ -443,28 +469,58 @@ void CWaveDisPlay::mouseMoveEvent(QMouseEvent *event) tracer->setVisible(true); tracerLabel->setVisible(true); - //将像素点转换成qcustomplot中的坐标值,并通过setGraphKey将锚点值设为真实数据值。tracer->setGraphKey(xAxis->pixelToCoord(event->pos().x())); - int graphCount = ui->widget_wave->graphCount(); - if(graphCount < 1) - return; - //获得鼠标位置处对应的横坐标数据x - double x = ui->widget_wave->xAxis->pixelToCoord(event->pos().x()); - //遍历曲线 - //for (int i = 0; i < graphCount && tracer->visible(); ++i) - { - //显示锚点 - QCPGraph *mGraph = ui->widget_wave->graph(0); - tracer->setGraph(mGraph);//将锚点设置到被选中的曲线上 - tracer->setGraphKey(x); //将游标横坐标设置成刚获得的横坐标数据x - tracer->updatePosition(); //使得刚设置游标的横纵坐标位置生效 - double xValue = tracer->position->key(); - double yValue = tracer->position->value(); - tracerLabel->setVisible(true); - tracerLabel->setText(QString("X: %1 Y: %2").arg( QString::number(xValue)).arg(QString::number(yValue))); - //显示tip框 - QCPDataContainer::const_iterator coorPoint = ui->widget_wave->graph(0)->data().data()->findBegin(xValue, true);//true代表向左搜索 - } + if(ui->Btn_Timewave->isChecked()){ + //将像素点转换成qcustomplot中的坐标值,并通过setGraphKey将锚点值设为真实数据值。tracer->setGraphKey(xAxis->pixelToCoord(event->pos().x())); + int graphCount = ui->widget_wave->graphCount(); + if(graphCount < 1) + return; + //获得鼠标位置处对应的横坐标数据x + double x = ui->widget_wave->xAxis->pixelToCoord(event->pos().x()); + //遍历曲线 + //for (int i = 0; i < graphCount && tracer->visible(); ++i) + { + //显示锚点 + QCPGraph *mGraph = ui->widget_wave->graph(0); + tracer->setGraph(mGraph);//将锚点设置到被选中的曲线上 + tracer->setGraphKey(x); //将游标横坐标设置成刚获得的横坐标数据x + tracer->updatePosition(); //使得刚设置游标的横纵坐标位置生效 + double xValue = tracer->position->key(); + double yValue = tracer->position->value(); + tracerLabel->setVisible(true); + tracerLabel->setText(QString("X: %1 Y: %2").arg( QString::number(xValue)).arg(QString::number(yValue))); + //显示tip框 + QCPDataContainer::const_iterator coorPoint = ui->widget_wave->graph(0)->data().data()->findBegin(xValue, true);//true代表向左搜索 + } + }else if(ui->Btn_Fswave->isChecked()){ + // 获取鼠标位置并转换为坐标 + double x = ui->widget_wave->xAxis->pixelToCoord(event->pos().x()); + // 找到最近的条形图数据点 + double minDistance = std::numeric_limits::max(); + double nearestBarKey = 0; + double nearestBarValue = 0; + + for (int i = 0; i < ui->widget_wave->plottableCount();i++) + { + if (QCPBars *bars = qobject_cast(ui->widget_wave->plottable(i))) + { + for (int i = 0; i < bars->data()->size(); ++i) + { + double barKey = bars->data()->at(i)->key; + double distance = std::abs(barKey - x); + if (distance < minDistance) + { + minDistance = distance; + nearestBarKey = barKey; + nearestBarValue = bars->data()->at(i)->value; + } + } + } + } + tracerLabel->setText(QString("X: %1 Y: %2").arg( QString::number(nearestBarKey)).arg(QString::number(nearestBarValue))); + // 设置游标位置 + tracer->position->setCoords(nearestBarKey, nearestBarValue); + } //重绘 ui->widget_wave->replot(); } diff --git a/WokingConditionConfig.cpp b/WokingConditionConfig.cpp index 940d58a..fd4994d 100644 --- a/WokingConditionConfig.cpp +++ b/WokingConditionConfig.cpp @@ -28,6 +28,7 @@ CWokingConditionConfig::CWokingConditionConfig(QWidget *parent) : ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu); ui->treeView->setStyle(QStyleFactory::create("windows")); + treeModel = new QStandardItemModel(ui->treeView); //创建模型指定父类 ui->treeView->setModel(treeModel); ui->treeView->setHeaderHidden(true); @@ -38,7 +39,7 @@ CWokingConditionConfig::CWokingConditionConfig(QWidget *parent) : QRegExp exp("[0-9\\.-]+$"); QValidator *Validator = new QRegExpValidator(exp); ui->lineEdit_Interval->setValidator(Validator); - + ui->treeView->setEditTriggers(QAbstractItemView::NoEditTriggers); } CWokingConditionConfig::~CWokingConditionConfig() diff --git a/WokingConditionConfig.h b/WokingConditionConfig.h index b0bfeed..411e1a8 100644 --- a/WokingConditionConfig.h +++ b/WokingConditionConfig.h @@ -3,7 +3,7 @@ #include #include //数据模型类 -#include "HeaderView.h" +#include "headerView.h" #include "TableHeaderView.h" #include "global.h" #include "sqlitedb.h" diff --git a/WorkingCondition.cpp b/WorkingCondition.cpp index c6e9837..c8c8d1e 100644 --- a/WorkingCondition.cpp +++ b/WorkingCondition.cpp @@ -96,7 +96,13 @@ QRadioButton* CWorkingcondition::add_radio_model(int flag) void CWorkingcondition::LoadWorkingConditionConfig() { +#ifdef Q_OS_WIN32 QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitWorkConditionsInfo.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/UnitWorkConditionsInfo.json"; +#endif + //QString fileName =QFileDialog::getOpenFileName(this,"打开文件",QDir::currentPath(), "*.json"); if(!fileName.isEmpty()) { @@ -659,7 +665,7 @@ void CWorkingcondition::on_pushButton_save_clicked() void CWorkingcondition::PushData() { - int flag = -1; + int flag = -1,flag2 = -1; for (int i = 0; i < model->rowCount(); i++) { QComboBox *gg = (QComboBox*)(ui->tableView->indexWidget(model->index(i,2))); QRadioButton *radio = (QRadioButton*)(ui->tableView->indexWidget(model->index(i,3))); @@ -671,6 +677,7 @@ void CWorkingcondition::PushData() if(strComBox == "是"){ enable = 1; + flag2 = 1; }else if( strComBox == "否"){ enable = 0; @@ -693,6 +700,10 @@ void CWorkingcondition::PushData() QMessageBox::information(this, QStringLiteral("提示"), "请选择起始工况!"); return; } + if(flag2 == -1){ + QMessageBox::information(this, QStringLiteral("提示"), "请使能一个工况!"); + return; + } QVector WorkCondition = g_SqliteDB->GetWorkCondition("t_WorkCondition",""); QJsonArray arrayWorkCondition; @@ -847,7 +858,13 @@ void CWorkingcondition::PushData() QJsonDocument jsonDoc; jsonDoc.setObject(WorkConditionsInfoObj); + +#ifdef Q_OS_WIN32 QString fileName = QCoreApplication::applicationDirPath() + "\\config\\UnitWorkConditionsInfo.json"; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/UnitWorkConditionsInfo.json"; +#endif QFile file(fileName); file.open(QIODevice::WriteOnly); diff --git a/ftpclient.cpp b/ftpclient.cpp index 1e5d14b..12e6f75 100644 --- a/ftpclient.cpp +++ b/ftpclient.cpp @@ -35,7 +35,6 @@ void FtpClient::SetUserInfo(const QString userAccount, const QString pwd) void FtpClient::SetServerInfo(const QString fileAddr, int Port/* =21 */) { - m_ftpManager->disconnect(SIGNAL(finished(QNetworkReply*))); connect(m_ftpManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(finished(QNetworkReply*))); //connect(m_ftpManager, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(CheckReplyStatus(QNetworkReply::NetworkError))); @@ -72,6 +71,8 @@ void FtpClient::finished(QNetworkReply* reply) QNetworkReply::NetworkError error = reply->error(); qDebug() << "finished" << error <error() != QNetworkReply::NoError) { + qDebug() << "Error: " << reply->errorString(); + } + + QJsonObject allObj,cmdBody,temp; + QJsonArray tempArray; + if(fileName.contains(".json")){ + allObj.insert("cmd", "90"); + temp["fileName"] = fileName; + if(type >= 0) + temp["content"] = type; + tempArray.append(temp); + allObj.insert("cmdBody",tempArray); + }else{ + allObj.insert("cmd", "46"); + allObj.insert("type", type); + temp["fileName"] = fileName; + allObj.insert("cmdBody",temp); + } + qDebug() << allObj << endl; + QNetworkRequest req; + QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP); + + req.setUrl(sUrl); + g_NetMgr->PostJson(req,allObj); +} diff --git a/ftpclient.h b/ftpclient.h index 8151c20..71022d2 100644 --- a/ftpclient.h +++ b/ftpclient.h @@ -2,13 +2,13 @@ #define FTPCLIENT_H #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include -#include +#include #include class FtpClient : public QWidget @@ -28,7 +28,7 @@ public: //下载文件 void DownLoad(const QString fileSource, const QString fileDest); - + void uploadFile(const QString fileUrl, const QString filePath,const QString fileName,int type = -1); signals: void sigReplyStatus(int result); void sigDownloadProcess(qint64 byteSend, qint64 byteTotal); @@ -50,6 +50,7 @@ private: QNetworkReply* downloadReply; }; + extern FtpClient *g_FtpClient; #endif // FTPCLIENT_H diff --git a/global.cpp b/global.cpp index 75a853e..1a58c79 100644 --- a/global.cpp +++ b/global.cpp @@ -14,3 +14,4 @@ QString g_LocalFile ; QString g_strVersion ; QString g_strProject ; QString g_strFre ; +QString g_strIOControl ; diff --git a/global.h b/global.h index e91aeb8..8285763 100644 --- a/global.h +++ b/global.h @@ -16,6 +16,9 @@ extern QString g_LocalFile ; extern QString g_strVersion ; extern QString g_strProject ; extern QString g_strFre ; +extern QString g_strIOControl ; +//#define NO_FILTER + typedef struct ChannelSetting{ double ChUnitCoeff; int ChUnitDot; @@ -244,6 +247,8 @@ typedef struct _TriggerEvent{ int triggeredEquipmentID; QString triggeredEventName; QString triggeredFeatureName; + QString triggeredFileName; + QString triggereValue; }TriggerEvent_t ; typedef struct _TriggerAlarmStatusInfo{ @@ -309,6 +314,9 @@ typedef struct _Charateristic{ double speedRPM; int ChUnitDot; QString channelType; + double InvertAlarm; + double InvertDanger; + } Charateristic_t; typedef struct tag_WAVE_DATA{ QString channelId; diff --git a/headerView.cpp b/headerView.cpp index 1162fe8..e209860 100644 --- a/headerView.cpp +++ b/headerView.cpp @@ -1,4 +1,4 @@ -#include "HeaderView.h" +#include "headerView.h" #include #include #include diff --git a/include/ftp/qftp.h b/include/ftp/qftp.h new file mode 100644 index 0000000..5f490c3 --- /dev/null +++ b/include/ftp/qftp.h @@ -0,0 +1,161 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtNetwork module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QFTP_H +#define QFTP_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QFtpPrivate; + +class QFtp : public QObject +{ + Q_OBJECT + +public: + explicit QFtp(QObject *parent = 0); + virtual ~QFtp(); + + enum State { + Unconnected, + HostLookup, + Connecting, + Connected, + LoggedIn, + Closing + }; + enum Error { + NoError, + UnknownError, + HostNotFound, + ConnectionRefused, + NotConnected + }; + enum Command { + None, + SetTransferMode, + SetProxy, + ConnectToHost, + Login, + Close, + List, + Cd, + Get, + Put, + Remove, + Mkdir, + Rmdir, + Rename, + RawCommand + }; + enum TransferMode { + Active, + Passive + }; + enum TransferType { + Binary, + Ascii + }; + + int setProxy(const QString &host, quint16 port); + int connectToHost(const QString &host, quint16 port=21); + int login(const QString &user = QString(), const QString &password = QString()); + int close(); + int setTransferMode(TransferMode mode); + int list(const QString &dir = QString()); + int cd(const QString &dir); + int get(const QString &file, QIODevice *dev=0, TransferType type = Binary); + int put(const QByteArray &data, const QString &file, TransferType type = Binary); + int put(QIODevice *dev, const QString &file, TransferType type = Binary); + int remove(const QString &file); + int mkdir(const QString &dir); + int rmdir(const QString &dir); + int rename(const QString &oldname, const QString &newname); + + int rawCommand(const QString &command); + + qint64 bytesAvailable() const; + qint64 read(char *data, qint64 maxlen); + QByteArray readAll(); + + int currentId() const; + QIODevice* currentDevice() const; + Command currentCommand() const; + bool hasPendingCommands() const; + void clearPendingCommands(); + + State state() const; + + Error error() const; + QString errorString() const; + +public Q_SLOTS: + void abort(); + +Q_SIGNALS: + void stateChanged(int); + void listInfo(const QUrlInfo&); + void readyRead(); + void dataTransferProgress(qint64, qint64); + void rawCommandReply(int, const QString&); + + void commandStarted(int); + void commandFinished(int, bool); + void done(bool); + +private: + Q_DISABLE_COPY(QFtp) + QScopedPointer d; + + Q_PRIVATE_SLOT(d, void _q_startNextCommand()) + Q_PRIVATE_SLOT(d, void _q_piFinished(const QString&)) + Q_PRIVATE_SLOT(d, void _q_piError(int, const QString&)) + Q_PRIVATE_SLOT(d, void _q_piConnectState(int)) + Q_PRIVATE_SLOT(d, void _q_piFtpReply(int, const QString&)) +}; + +QT_END_NAMESPACE + +#endif // QFTP_H diff --git a/include/ftp/qurlinfo.h b/include/ftp/qurlinfo.h new file mode 100644 index 0000000..d8399a9 --- /dev/null +++ b/include/ftp/qurlinfo.h @@ -0,0 +1,121 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtNetwork module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QURLINFO_H +#define QURLINFO_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QUrl; +class QUrlInfoPrivate; + +class QUrlInfo +{ +public: + enum PermissionSpec { + ReadOwner = 00400, WriteOwner = 00200, ExeOwner = 00100, + ReadGroup = 00040, WriteGroup = 00020, ExeGroup = 00010, + ReadOther = 00004, WriteOther = 00002, ExeOther = 00001 }; + + QUrlInfo(); + QUrlInfo(const QUrlInfo &ui); + QUrlInfo(const QString &name, int permissions, const QString &owner, + const QString &group, qint64 size, const QDateTime &lastModified, + const QDateTime &lastRead, bool isDir, bool isFile, bool isSymLink, + bool isWritable, bool isReadable, bool isExecutable); + QUrlInfo(const QUrl &url, int permissions, const QString &owner, + const QString &group, qint64 size, const QDateTime &lastModified, + const QDateTime &lastRead, bool isDir, bool isFile, bool isSymLink, + bool isWritable, bool isReadable, bool isExecutable); + QUrlInfo &operator=(const QUrlInfo &ui); + virtual ~QUrlInfo(); + + virtual void setName(const QString &name); + virtual void setDir(bool b); + virtual void setFile(bool b); + virtual void setSymLink(bool b); + virtual void setOwner(const QString &s); + virtual void setGroup(const QString &s); + virtual void setSize(qint64 size); + virtual void setWritable(bool b); + virtual void setReadable(bool b); + virtual void setPermissions(int p); + virtual void setLastModified(const QDateTime &dt); + void setLastRead(const QDateTime &dt); + + bool isValid() const; + + QString name() const; + int permissions() const; + QString owner() const; + QString group() const; + qint64 size() const; + QDateTime lastModified() const; + QDateTime lastRead() const; + bool isDir() const; + bool isFile() const; + bool isSymLink() const; + bool isWritable() const; + bool isReadable() const; + bool isExecutable() const; + + static bool greaterThan(const QUrlInfo &i1, const QUrlInfo &i2, + int sortBy); + static bool lessThan(const QUrlInfo &i1, const QUrlInfo &i2, + int sortBy); + static bool equal(const QUrlInfo &i1, const QUrlInfo &i2, + int sortBy); + + bool operator==(const QUrlInfo &i) const; + inline bool operator!=(const QUrlInfo &i) const + { return !operator==(i); } + +private: + QUrlInfoPrivate *d; +}; + +QT_END_NAMESPACE + +#endif // QURLINFO_H diff --git a/lib/fftw/cmake/fftw3/FFTW3Config.cmake b/lib/fftw/cmake/fftw3/FFTW3Config.cmake new file mode 100644 index 0000000..de7527b --- /dev/null +++ b/lib/fftw/cmake/fftw3/FFTW3Config.cmake @@ -0,0 +1,17 @@ +# defined since 2.8.3 +if (CMAKE_VERSION VERSION_LESS 2.8.3) + get_filename_component (CMAKE_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_FILE} PATH) +endif () + +# Allows loading FFTW3 settings from another project +set (FFTW3_CONFIG_FILE "${CMAKE_CURRENT_LIST_FILE}") + +set (FFTW3_LIBRARIES fftw3) +set (FFTW3_LIBRARY_DIRS /opt/Tools/fftw-3.3.8/install/lib) +set (FFTW3_INCLUDE_DIRS /opt/Tools/fftw-3.3.8/install/include) + +include ("${CMAKE_CURRENT_LIST_DIR}/FFTW3LibraryDepends.cmake") + +if (CMAKE_VERSION VERSION_LESS 2.8.3) + set (CMAKE_CURRENT_LIST_DIR) +endif () diff --git a/lib/fftw/cmake/fftw3/FFTW3ConfigVersion.cmake b/lib/fftw/cmake/fftw3/FFTW3ConfigVersion.cmake new file mode 100644 index 0000000..4d7e4d8 --- /dev/null +++ b/lib/fftw/cmake/fftw3/FFTW3ConfigVersion.cmake @@ -0,0 +1,12 @@ + +set (PACKAGE_VERSION "3.3.8") + +# Check whether the requested PACKAGE_FIND_VERSION is compatible +if ("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set (PACKAGE_VERSION_COMPATIBLE FALSE) +else () + set (PACKAGE_VERSION_COMPATIBLE TRUE) + if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") + set (PACKAGE_VERSION_EXACT TRUE) + endif () +endif () diff --git a/lib/fftw/libfftw3.so.3 b/lib/fftw/libfftw3.so.3 new file mode 100644 index 0000000..7737aa2 Binary files /dev/null and b/lib/fftw/libfftw3.so.3 differ diff --git a/lib/fftw/libfftw3.so.3.5.8 b/lib/fftw/libfftw3.so.3.5.8 new file mode 100644 index 0000000..7737aa2 Binary files /dev/null and b/lib/fftw/libfftw3.so.3.5.8 differ diff --git a/lib/fftw/pkgconfig/fftw3.pc b/lib/fftw/pkgconfig/fftw3.pc new file mode 100644 index 0000000..8c8ac5d --- /dev/null +++ b/lib/fftw/pkgconfig/fftw3.pc @@ -0,0 +1,11 @@ +prefix=/opt/Tools/fftw-3.3.8/install +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: FFTW +Description: fast Fourier transform library +Version: 3.3.8 +Libs: -L${libdir} -lfftw3 +Libs.private: -lm +Cflags: -I${includedir} diff --git a/lib/ftp/cmake/Qt5Ftp/ExtraSourceIncludes.cmake b/lib/ftp/cmake/Qt5Ftp/ExtraSourceIncludes.cmake new file mode 100644 index 0000000..757b5f5 --- /dev/null +++ b/lib/ftp/cmake/Qt5Ftp/ExtraSourceIncludes.cmake @@ -0,0 +1,7 @@ + +list(APPEND _Qt5Ftp_OWN_INCLUDE_DIRS + "/opt/Tools/qtftp-master/include" "/opt/Tools/qtftp-master/include/QtFtp" +) +set(Qt5Ftp_PRIVATE_INCLUDE_DIRS + "/opt/Tools/qtftp-master/include/QtFtp/5.0.0" "/opt/Tools/qtftp-master/include/QtFtp/5.0.0/QtFtp" +) diff --git a/lib/ftp/cmake/Qt5Ftp/Qt5FtpConfig.cmake b/lib/ftp/cmake/Qt5Ftp/Qt5FtpConfig.cmake new file mode 100644 index 0000000..dbd18a2 --- /dev/null +++ b/lib/ftp/cmake/Qt5Ftp/Qt5FtpConfig.cmake @@ -0,0 +1,176 @@ + +if (CMAKE_VERSION VERSION_LESS 3.1.0) + message(FATAL_ERROR "Qt 5 Ftp module requires at least CMake version 3.1.0") +endif() + +get_filename_component(_qt5Ftp_install_prefix "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) + +# For backwards compatibility only. Use Qt5Ftp_VERSION instead. +set(Qt5Ftp_VERSION_STRING 5.0.0) + +set(Qt5Ftp_LIBRARIES Qt5::Ftp) + +macro(_qt5_Ftp_check_file_exists file) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"Qt5::Ftp\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() +endmacro() + +macro(_populate_Ftp_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION) + set_property(TARGET Qt5::Ftp APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + + set(imported_location "${_qt5Ftp_install_prefix}/lib/${LIB_LOCATION}") + _qt5_Ftp_check_file_exists(${imported_location}) + set_target_properties(Qt5::Ftp PROPERTIES + "INTERFACE_LINK_LIBRARIES" "${_Qt5Ftp_LIB_DEPENDENCIES}" + "IMPORTED_LOCATION_${Configuration}" ${imported_location} + "IMPORTED_SONAME_${Configuration}" "libQt5Ftp.so.5" + # For backward compatibility with CMake < 2.8.12 + "IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}" "${_Qt5Ftp_LIB_DEPENDENCIES}" + ) + +endmacro() + +if (NOT TARGET Qt5::Ftp) + + set(_Qt5Ftp_OWN_INCLUDE_DIRS "${_qt5Ftp_install_prefix}/include/" "${_qt5Ftp_install_prefix}/include/QtFtp") + set(Qt5Ftp_PRIVATE_INCLUDE_DIRS "") + include("${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake" OPTIONAL) + + foreach(_dir ${_Qt5Ftp_OWN_INCLUDE_DIRS}) + _qt5_Ftp_check_file_exists(${_dir}) + endforeach() + + # Only check existence of private includes if the Private component is + # specified. + list(FIND Qt5Ftp_FIND_COMPONENTS Private _check_private) + if (NOT _check_private STREQUAL -1) + foreach(_dir ${Qt5Ftp_PRIVATE_INCLUDE_DIRS}) + _qt5_Ftp_check_file_exists(${_dir}) + endforeach() + endif() + + set(Qt5Ftp_INCLUDE_DIRS ${_Qt5Ftp_OWN_INCLUDE_DIRS}) + + set(Qt5Ftp_DEFINITIONS -DQT_FTP_LIB) + set(Qt5Ftp_COMPILE_DEFINITIONS QT_FTP_LIB) + set(_Qt5Ftp_MODULE_DEPENDENCIES "Network;Core") + + + set(Qt5Ftp_OWN_PRIVATE_INCLUDE_DIRS ${Qt5Ftp_PRIVATE_INCLUDE_DIRS}) + + set(_Qt5Ftp_FIND_DEPENDENCIES_REQUIRED) + if (Qt5Ftp_FIND_REQUIRED) + set(_Qt5Ftp_FIND_DEPENDENCIES_REQUIRED REQUIRED) + endif() + set(_Qt5Ftp_FIND_DEPENDENCIES_QUIET) + if (Qt5Ftp_FIND_QUIETLY) + set(_Qt5Ftp_DEPENDENCIES_FIND_QUIET QUIET) + endif() + set(_Qt5Ftp_FIND_VERSION_EXACT) + if (Qt5Ftp_FIND_VERSION_EXACT) + set(_Qt5Ftp_FIND_VERSION_EXACT EXACT) + endif() + + set(Qt5Ftp_EXECUTABLE_COMPILE_FLAGS "") + + foreach(_module_dep ${_Qt5Ftp_MODULE_DEPENDENCIES}) + if (NOT Qt5${_module_dep}_FOUND) + find_package(Qt5${_module_dep} + 5.0.0 ${_Qt5Ftp_FIND_VERSION_EXACT} + ${_Qt5Ftp_DEPENDENCIES_FIND_QUIET} + ${_Qt5Ftp_FIND_DEPENDENCIES_REQUIRED} + PATHS "${CMAKE_CURRENT_LIST_DIR}/.." NO_DEFAULT_PATH + ) + endif() + + if (NOT Qt5${_module_dep}_FOUND) + set(Qt5Ftp_FOUND False) + return() + endif() + + list(APPEND Qt5Ftp_INCLUDE_DIRS "${Qt5${_module_dep}_INCLUDE_DIRS}") + list(APPEND Qt5Ftp_PRIVATE_INCLUDE_DIRS "${Qt5${_module_dep}_PRIVATE_INCLUDE_DIRS}") + list(APPEND Qt5Ftp_DEFINITIONS ${Qt5${_module_dep}_DEFINITIONS}) + list(APPEND Qt5Ftp_COMPILE_DEFINITIONS ${Qt5${_module_dep}_COMPILE_DEFINITIONS}) + list(APPEND Qt5Ftp_EXECUTABLE_COMPILE_FLAGS ${Qt5${_module_dep}_EXECUTABLE_COMPILE_FLAGS}) + endforeach() + list(REMOVE_DUPLICATES Qt5Ftp_INCLUDE_DIRS) + list(REMOVE_DUPLICATES Qt5Ftp_PRIVATE_INCLUDE_DIRS) + list(REMOVE_DUPLICATES Qt5Ftp_DEFINITIONS) + list(REMOVE_DUPLICATES Qt5Ftp_COMPILE_DEFINITIONS) + list(REMOVE_DUPLICATES Qt5Ftp_EXECUTABLE_COMPILE_FLAGS) + + set(_Qt5Ftp_LIB_DEPENDENCIES "Qt5::Network;Qt5::Core") + + + add_library(Qt5::Ftp SHARED IMPORTED) + + set_property(TARGET Qt5::Ftp PROPERTY + INTERFACE_INCLUDE_DIRECTORIES ${_Qt5Ftp_OWN_INCLUDE_DIRS}) + set_property(TARGET Qt5::Ftp PROPERTY + INTERFACE_COMPILE_DEFINITIONS QT_FTP_LIB) + + set_property(TARGET Qt5::Ftp PROPERTY INTERFACE_QT_ENABLED_FEATURES ) + set_property(TARGET Qt5::Ftp PROPERTY INTERFACE_QT_DISABLED_FEATURES ) + + set(_Qt5Ftp_PRIVATE_DIRS_EXIST TRUE) + foreach (_Qt5Ftp_PRIVATE_DIR ${Qt5Ftp_OWN_PRIVATE_INCLUDE_DIRS}) + if (NOT EXISTS ${_Qt5Ftp_PRIVATE_DIR}) + set(_Qt5Ftp_PRIVATE_DIRS_EXIST FALSE) + endif() + endforeach() + + if (_Qt5Ftp_PRIVATE_DIRS_EXIST) + add_library(Qt5::FtpPrivate INTERFACE IMPORTED) + set_property(TARGET Qt5::FtpPrivate PROPERTY + INTERFACE_INCLUDE_DIRECTORIES ${Qt5Ftp_OWN_PRIVATE_INCLUDE_DIRS} + ) + set(_Qt5Ftp_PRIVATEDEPS) + foreach(dep ${_Qt5Ftp_LIB_DEPENDENCIES}) + if (TARGET ${dep}Private) + list(APPEND _Qt5Ftp_PRIVATEDEPS ${dep}Private) + endif() + endforeach() + set_property(TARGET Qt5::FtpPrivate PROPERTY + INTERFACE_LINK_LIBRARIES Qt5::Ftp ${_Qt5Ftp_PRIVATEDEPS} + ) + endif() + + _populate_Ftp_target_properties(RELEASE "libQt5Ftp.so.5.0.0" "" ) + + + + + file(GLOB pluginTargets "${CMAKE_CURRENT_LIST_DIR}/Qt5Ftp_*Plugin.cmake") + + macro(_populate_Ftp_plugin_properties Plugin Configuration PLUGIN_LOCATION) + set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + + set(imported_location "${_qt5Ftp_install_prefix}/plugins/${PLUGIN_LOCATION}") + _qt5_Ftp_check_file_exists(${imported_location}) + set_target_properties(Qt5::${Plugin} PROPERTIES + "IMPORTED_LOCATION_${Configuration}" ${imported_location} + ) + endmacro() + + if (pluginTargets) + foreach(pluginTarget ${pluginTargets}) + include(${pluginTarget}) + endforeach() + endif() + + + + +_qt5_Ftp_check_file_exists("${CMAKE_CURRENT_LIST_DIR}/Qt5FtpConfigVersion.cmake") + +endif() diff --git a/lib/ftp/cmake/Qt5Ftp/Qt5FtpConfigVersion.cmake b/lib/ftp/cmake/Qt5Ftp/Qt5FtpConfigVersion.cmake new file mode 100644 index 0000000..3d778fb --- /dev/null +++ b/lib/ftp/cmake/Qt5Ftp/Qt5FtpConfigVersion.cmake @@ -0,0 +1,11 @@ + +set(PACKAGE_VERSION 5.0.0) + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() diff --git a/lib/ftp/libQt5Ftp.prl b/lib/ftp/libQt5Ftp.prl new file mode 100644 index 0000000..b9580f8 --- /dev/null +++ b/lib/ftp/libQt5Ftp.prl @@ -0,0 +1,6 @@ +QMAKE_PRL_BUILD_DIR = /opt/Tools/build-qtftp-Desktop_Qt_5_12_2_GCC_64bit-Release/src/qftp +QMAKE_PRO_INPUT = qftp.pro +QMAKE_PRL_TARGET = libQt5Ftp.so.5.0.0 +QMAKE_PRL_CONFIG = lex yacc depend_includepath testcase_targets import_plugins import_qpa_plugin qt_build_extra file_copies qmake_use qt warn_on release link_prl incremental shared release linux unix posix gcc sse2 aesni sse3 ssse3 sse4_1 sse4_2 avx avx2 avx512f avx512bw avx512cd avx512dq avx512er avx512ifma avx512pf avx512vbmi avx512vl compile_examples enable_new_dtags f16c force_debug_info largefile rdrnd shani x86SimdAlways prefix_build force_independent utf8_source create_prl link_prl prepare_docs qt_docs_targets no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions explicitlib qtquickcompiler shared relative_qt_rpath qmake_cache target_qt c++11 strict_c++ c++14 c99 c11 hide_symbols bsymbolic_functions separate_debug_info split_incpath qt_install_headers need_fwd_pri qt_install_module create_cmake compiler_supports_fpmath create_pc create_libtool have_target dll debug_info thread moc resources +QMAKE_PRL_VERSION = 5.0.0 +QMAKE_PRL_LIBS = -L/opt/Qt5.12.2/5.12.2/gcc_64/lib -lQt5Network -lQt5Core -lpthread diff --git a/lib/ftp/libQt5Ftp.so.5 b/lib/ftp/libQt5Ftp.so.5 new file mode 100644 index 0000000..11248bb Binary files /dev/null and b/lib/ftp/libQt5Ftp.so.5 differ diff --git a/lib/ftp/libQt5Ftp.so.5.0 b/lib/ftp/libQt5Ftp.so.5.0 new file mode 100644 index 0000000..11248bb Binary files /dev/null and b/lib/ftp/libQt5Ftp.so.5.0 differ diff --git a/lib/ftp/libQt5Ftp.so.5.0.0 b/lib/ftp/libQt5Ftp.so.5.0.0 new file mode 100644 index 0000000..11248bb Binary files /dev/null and b/lib/ftp/libQt5Ftp.so.5.0.0 differ diff --git a/lib/ftp/libQt5Ftp.so.5.0.0.debug b/lib/ftp/libQt5Ftp.so.5.0.0.debug new file mode 100644 index 0000000..b61f87a Binary files /dev/null and b/lib/ftp/libQt5Ftp.so.5.0.0.debug differ diff --git a/lib/ftp/pkgconfig/Qt5Ftp.pc b/lib/ftp/pkgconfig/Qt5Ftp.pc new file mode 100644 index 0000000..378d990 --- /dev/null +++ b/lib/ftp/pkgconfig/Qt5Ftp.pc @@ -0,0 +1,13 @@ +prefix=/opt/Qt5.12.2/5.12.2/gcc_64 +exec_prefix=${prefix} +libdir=${prefix}/lib +includedir=${prefix}/include + + +Name: Qt5 Ftp +Description: Qt Ftp module +Version: 5.0.0 +Libs: -L${libdir} -lQt5Ftp +Cflags: -DQT_FTP_LIB -I${includedir}/QtFtp -I${includedir} +Requires: Qt5Core Qt5Network + diff --git a/lib/mqtt/cmake/Qt5Qmqtt/ExtraSourceIncludes.cmake b/lib/mqtt/cmake/Qt5Qmqtt/ExtraSourceIncludes.cmake index 8f1e72c..1999588 100644 --- a/lib/mqtt/cmake/Qt5Qmqtt/ExtraSourceIncludes.cmake +++ b/lib/mqtt/cmake/Qt5Qmqtt/ExtraSourceIncludes.cmake @@ -1,7 +1,7 @@ list(APPEND _Qt5Qmqtt_OWN_INCLUDE_DIRS - "E:/ThunderDownload/qmqtt-master/include" "E:/ThunderDownload/qmqtt-master/include/QtQmqtt" + "/opt/Tools/qmqtt-emqx/qmqtt-master/include" "/opt/Tools/qmqtt-emqx/qmqtt-master/include/QtQmqtt" ) set(Qt5Qmqtt_PRIVATE_INCLUDE_DIRS - "E:/ThunderDownload/qmqtt-master/include/QtQmqtt/1.0.2" "E:/ThunderDownload/qmqtt-master/include/QtQmqtt/1.0.2/QtQmqtt" + "/opt/Tools/qmqtt-emqx/qmqtt-master/include/QtQmqtt/1.0.3" "/opt/Tools/qmqtt-emqx/qmqtt-master/include/QtQmqtt/1.0.3/QtQmqtt" ) diff --git a/lib/mqtt/cmake/Qt5Qmqtt/Qt5QmqttConfig.cmake b/lib/mqtt/cmake/Qt5Qmqtt/Qt5QmqttConfig.cmake index a1b5dee..b035085 100644 --- a/lib/mqtt/cmake/Qt5Qmqtt/Qt5QmqttConfig.cmake +++ b/lib/mqtt/cmake/Qt5Qmqtt/Qt5QmqttConfig.cmake @@ -6,7 +6,7 @@ endif() get_filename_component(_qt5Qmqtt_install_prefix "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) # For backwards compatibility only. Use Qt5Qmqtt_VERSION instead. -set(Qt5Qmqtt_VERSION_STRING 1.0.2) +set(Qt5Qmqtt_VERSION_STRING 1.0.3) set(Qt5Qmqtt_LIBRARIES Qt5::Qmqtt) @@ -27,22 +27,16 @@ endmacro() macro(_populate_Qmqtt_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION) set_property(TARGET Qt5::Qmqtt APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) - set(imported_location "${_qt5Qmqtt_install_prefix}/bin/${LIB_LOCATION}") + set(imported_location "${_qt5Qmqtt_install_prefix}/lib/${LIB_LOCATION}") _qt5_Qmqtt_check_file_exists(${imported_location}) set_target_properties(Qt5::Qmqtt PROPERTIES "INTERFACE_LINK_LIBRARIES" "${_Qt5Qmqtt_LIB_DEPENDENCIES}" "IMPORTED_LOCATION_${Configuration}" ${imported_location} + "IMPORTED_SONAME_${Configuration}" "libQt5Qmqtt.so.1" # For backward compatibility with CMake < 2.8.12 "IMPORTED_LINK_INTERFACE_LIBRARIES_${Configuration}" "${_Qt5Qmqtt_LIB_DEPENDENCIES}" ) - set(imported_implib "${_qt5Qmqtt_install_prefix}/lib/${IMPLIB_LOCATION}") - _qt5_Qmqtt_check_file_exists(${imported_implib}) - if(NOT "${IMPLIB_LOCATION}" STREQUAL "") - set_target_properties(Qt5::Qmqtt PROPERTIES - "IMPORTED_IMPLIB_${Configuration}" ${imported_implib} - ) - endif() endmacro() if (NOT TARGET Qt5::Qmqtt) @@ -91,7 +85,7 @@ if (NOT TARGET Qt5::Qmqtt) foreach(_module_dep ${_Qt5Qmqtt_MODULE_DEPENDENCIES}) if (NOT Qt5${_module_dep}_FOUND) find_package(Qt5${_module_dep} - 1.0.2 ${_Qt5Qmqtt_FIND_VERSION_EXACT} + 1.0.3 ${_Qt5Qmqtt_FIND_VERSION_EXACT} ${_Qt5Qmqtt_DEPENDENCIES_FIND_QUIET} ${_Qt5Qmqtt_FIND_DEPENDENCIES_REQUIRED} PATHS "${CMAKE_CURRENT_LIST_DIR}/.." NO_DEFAULT_PATH @@ -151,13 +145,10 @@ if (NOT TARGET Qt5::Qmqtt) ) endif() - _populate_Qmqtt_target_properties(RELEASE "Qt5Qmqtt.dll" "libQt5Qmqtt.a" ) + _populate_Qmqtt_target_properties(RELEASE "libQt5Qmqtt.so.1.0.3" "" ) - _populate_Qmqtt_target_properties(DEBUG "Qt5Qmqttd.dll" "libQt5Qmqttd.a" ) - - file(GLOB pluginTargets "${CMAKE_CURRENT_LIST_DIR}/Qt5Qmqtt_*Plugin.cmake") diff --git a/lib/mqtt/cmake/Qt5Qmqtt/Qt5QmqttConfigVersion.cmake b/lib/mqtt/cmake/Qt5Qmqtt/Qt5QmqttConfigVersion.cmake index 53124b1..48fb25c 100644 --- a/lib/mqtt/cmake/Qt5Qmqtt/Qt5QmqttConfigVersion.cmake +++ b/lib/mqtt/cmake/Qt5Qmqtt/Qt5QmqttConfigVersion.cmake @@ -1,5 +1,5 @@ -set(PACKAGE_VERSION 1.0.2) +set(PACKAGE_VERSION 1.0.3) if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) set(PACKAGE_VERSION_COMPATIBLE FALSE) diff --git a/lib/mqtt/libQt5Qmqtt.prl b/lib/mqtt/libQt5Qmqtt.prl new file mode 100644 index 0000000..ca1b321 --- /dev/null +++ b/lib/mqtt/libQt5Qmqtt.prl @@ -0,0 +1,6 @@ +QMAKE_PRL_BUILD_DIR = /opt/Tools/qmqtt-emqx/build-qmqtt-Desktop_Qt_5_12_2_GCC_64bit-Release/src/mqtt +QMAKE_PRO_INPUT = qmqtt.pro +QMAKE_PRL_TARGET = libQt5Qmqtt.so.1.0.3 +QMAKE_PRL_CONFIG = lex yacc depend_includepath testcase_targets import_plugins import_qpa_plugin qt_build_extra file_copies qmake_use qt warn_on release link_prl incremental shared release linux unix posix gcc sse2 aesni sse3 ssse3 sse4_1 sse4_2 avx avx2 avx512f avx512bw avx512cd avx512dq avx512er avx512ifma avx512pf avx512vbmi avx512vl compile_examples enable_new_dtags f16c force_debug_info largefile precompile_header rdrnd shani x86SimdAlways prefix_build force_independent utf8_source create_prl link_prl prepare_docs qt_docs_targets no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions explicitlib warning_clean qtquickcompiler relative_qt_rpath qmake_cache target_qt c++11 strict_c++ c++14 c99 c11 hide_symbols bsymbolic_functions separate_debug_info split_incpath qt_install_headers need_fwd_pri qt_install_module create_cmake compiler_supports_fpmath create_pc create_libtool have_target dll debug_info thread moc resources +QMAKE_PRL_VERSION = 1.0.3 +QMAKE_PRL_LIBS = -L/opt/Qt5.12.2/5.12.2/gcc_64/lib -lQt5Network -lQt5Core -lpthread diff --git a/lib/mqtt/libQt5Qmqtt.so.1 b/lib/mqtt/libQt5Qmqtt.so.1 new file mode 100644 index 0000000..628acda Binary files /dev/null and b/lib/mqtt/libQt5Qmqtt.so.1 differ diff --git a/lib/mqtt/libQt5Qmqtt.so.1.0 b/lib/mqtt/libQt5Qmqtt.so.1.0 new file mode 100644 index 0000000..628acda Binary files /dev/null and b/lib/mqtt/libQt5Qmqtt.so.1.0 differ diff --git a/lib/mqtt/libQt5Qmqtt.so.1.0.3 b/lib/mqtt/libQt5Qmqtt.so.1.0.3 new file mode 100644 index 0000000..628acda Binary files /dev/null and b/lib/mqtt/libQt5Qmqtt.so.1.0.3 differ diff --git a/lib/mqtt/libQt5Qmqtt.so.1.0.3.debug b/lib/mqtt/libQt5Qmqtt.so.1.0.3.debug new file mode 100644 index 0000000..0d264b8 Binary files /dev/null and b/lib/mqtt/libQt5Qmqtt.so.1.0.3.debug differ diff --git a/lib/mqtt/pkgconfig/Qt5Qmqtt.pc b/lib/mqtt/pkgconfig/Qt5Qmqtt.pc index 62f2ba8..c698afb 100644 --- a/lib/mqtt/pkgconfig/Qt5Qmqtt.pc +++ b/lib/mqtt/pkgconfig/Qt5Qmqtt.pc @@ -1,4 +1,4 @@ -prefix=D:/Qt/Qt5.12.11/5.12.11/mingw73_32 +prefix=/opt/Qt5.12.2/5.12.2/gcc_64 exec_prefix=${prefix} libdir=${prefix}/lib includedir=${prefix}/include @@ -6,8 +6,8 @@ includedir=${prefix}/include Name: Qt5 Qmqtt Description: Qt Qmqtt module -Version: 1.0.2 -Libs: -L${libdir} -lQt5Qmqttd +Version: 1.0.3 +Libs: -L${libdir} -lQt5Qmqtt Cflags: -DQT_QMQTT_LIB -I${includedir}/QtQmqtt -I${includedir} Requires: Qt5Core Qt5Network diff --git a/log.h b/log.h index 1aa2bd6..514b693 100644 --- a/log.h +++ b/log.h @@ -6,8 +6,13 @@ #include #include -#define LOG_FILE_NAME QCoreApplication::applicationDirPath() + QString("\\Log\\") + QDateTime::currentDateTime().toString("yyyy-MM-dd") + QString(".log") +#ifdef Q_OS_WIN32 + #define LOG_FILE_NAME QCoreApplication::applicationDirPath() + QString("\\Log\\") + QDateTime::currentDateTime().toString("yyyy-MM-dd") + QString(".log") +#endif +#ifdef Q_OS_LINUX + #define LOG_FILE_NAME QCoreApplication::applicationDirPath() + QString("/Log/") + QDateTime::currentDateTime().toString("yyyy-MM-dd") + QString(".log") +#endif static int s_logLevel = 0; static QMutex s_logMutex; static QString s_logPath; diff --git a/main.cpp b/main.cpp index b48f94e..38d9d3d 100644 --- a/main.cpp +++ b/main.cpp @@ -1,9 +1,11 @@ #include "mainwindow.h" #include + int main(int argc, char *argv[]) { QApplication a(argc, argv); + MainWindow w; w.show(); diff --git a/mainwindow.cpp b/mainwindow.cpp index 077f668..ff35a2f 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -20,8 +20,23 @@ MainWindow::MainWindow(QWidget *parent) : g_FtpClient = new FtpClient(); //读取ini +<<<<<<< HEAD QSettings settingsread(QCoreApplication::applicationDirPath() + "\\config\\config.ini",QSettings::IniFormat); g_strVersion = "SJ90C V1.1"; +======= + +#ifdef Q_OS_WIN32 + QSettings settingsread(QCoreApplication::applicationDirPath() + "\\config\\config.ini",QSettings::IniFormat); +#endif +#ifdef Q_OS_LINUX + QSettings settingsread(QCoreApplication::applicationDirPath() + "/config/config.ini",QSettings::IniFormat); +#endif + QDate buildDate = QLocale( QLocale::English ).toDate( QString(__DATE__).replace(" ", " 0"), "MMM dd yyyy"); + QTime buildTime = QTime::fromString(__TIME__, "hh:mm:ss"); + + g_strVersion = "SJ90C V1.1_" + buildDate.toString("yyyyMMdd"); + customLogMessageHandler(QtDebugMsg,g_strVersion + " " + buildTime.toString()); +>>>>>>> font g_strProject = settingsread.value("main/Project").toString(); g_strFre = settingsread.value("main/Fre").toString(); @@ -243,16 +258,28 @@ void MainWindow::leftConfigClick() delete pWaveDisPlay; pWaveDisPlay = NULL; } + if(pDIOBoard){ + delete pDIOBoard; + pDIOBoard = NULL; + } }else if(name == "特征值列表"){ ui->tabWidget_main->setCurrentWidget(pCharacteristcList); if(pWaveDisPlay){ delete pWaveDisPlay; pWaveDisPlay = NULL; } + if(pDIOBoard){ + delete pDIOBoard; + pDIOBoard = NULL; + } }else if(name == "气隙监测"){ }else if(name == "波形图"){ + if(pDIOBoard){ + delete pDIOBoard; + pDIOBoard = NULL; + } if(pWaveDisPlay == NULL) pWaveDisPlay = new CWaveDisPlay(this); ui->tabWidget_main->addTab(pWaveDisPlay,""); @@ -300,12 +327,26 @@ void MainWindow::leftConfigClick2() } if(name == "实时报警"){ + if(pRealTimeAlarm == NULL) + pRealTimeAlarm = new CRealTimeAlarm (this); + ui->tabWidget_accidentTracing->addTab(pRealTimeAlarm,""); ui->tabWidget_accidentTracing->setCurrentWidget(pRealTimeAlarm); + if(pHistoryAlarm){ + delete pHistoryAlarm; + pHistoryAlarm = NULL; + } }else if(name == "历史报警"){ + if(pHistoryAlarm == NULL) + pHistoryAlarm = new CHistoryAlarm (this); + ui->tabWidget_accidentTracing->addTab(pHistoryAlarm,""); ui->tabWidget_accidentTracing->setCurrentWidget(pHistoryAlarm); - }else if(name == "趋势分析"){ + if(pRealTimeAlarm){ + delete pRealTimeAlarm; + pRealTimeAlarm = NULL; + } + }/*else if(name == "趋势分析"){ ui->tabWidget_accidentTracing->setCurrentWidget(pTrendGraph); - } + }*/ } void MainWindow::initLeft3() @@ -337,6 +378,22 @@ void MainWindow::leftConfigClick3() if(name == "机组配置"){ ui->tabWidget_Configuration->setCurrentWidget(pUnitSetting); + if(pBoardSetting){ + delete pBoardSetting; + pBoardSetting = NULL; + } + if(pWorkCondition){ + delete pWorkCondition; + pWorkCondition = NULL; + } + if(pTriggerConfig){ + delete pTriggerConfig; + pTriggerConfig = NULL; + } + if(pConfiguration){ + delete pConfiguration; + pConfiguration = NULL; + } }else if(name == "板卡配置"){ if(pBoardSetting == NULL) pBoardSetting = new CBoardSetting (this); @@ -375,15 +432,10 @@ void MainWindow::leftConfigClick3() delete pTriggerConfig; pTriggerConfig = NULL; } -// if(pUnitConfiguration){ -// delete pUnitConfiguration; -// pUnitConfiguration = NULL; -// } - -// if(pTestForm){ -// delete pTestForm; -// pTestForm = NULL; -// } + if(pConfiguration){ + delete pConfiguration; + pConfiguration = NULL; + } }else if(name == "工况配置"){ if(pWorkCondition == NULL) @@ -569,8 +621,10 @@ void MainWindow::buttonClick() if (name == "实时监测") { if(pRealTimeForm == NULL) pRealTimeForm = new CRealTimeForm (this); - + if(pDIOBoard == NULL) + pDIOBoard = new CDIO_Board (this); ui->stackedWidget->setCurrentIndex(0); + ui->tabWidget_main->setCurrentIndex(0); } else if (name == "事故追溯") { ui->stackedWidget->setCurrentIndex(1); diff --git a/realtimeform.cpp b/realtimeform.cpp index 5aed8f0..fe34007 100644 --- a/realtimeform.cpp +++ b/realtimeform.cpp @@ -21,128 +21,111 @@ CRealTimeForm::CRealTimeForm(QWidget *parent) : QWidget(parent), - ui(new Ui::CRealTimeForm) -{ + ui(new Ui::CRealTimeForm) { ui->setupUi(this); ui->graphicsView->setContextMenuPolicy(Qt::CustomContextMenu); - QObject::connect(ui->graphicsView ,SIGNAL(customContextMenuRequested(const QPoint &)),this,SLOT(on_graphView_customContextMenuRequested(const QPoint &))); - + QObject::connect(ui->graphicsView, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(on_graphView_customContextMenuRequested(const QPoint &))); ui->graphicsView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate); m_pGraphicsScene = new QGraphicsScene(); - m_pGraphicsScene->setSceneRect(0,0,600,550); + m_pGraphicsScene->setSceneRect(0, 0, 600, 550); ui->graphicsView->setScene(m_pGraphicsScene); ui->graphicsView->setDragMode(QGraphicsView::RubberBandDrag); ui->graphicsView->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); ui->graphicsView_2->setContextMenuPolicy(Qt::CustomContextMenu); - QObject::connect(ui->graphicsView_2 ,SIGNAL(customContextMenuRequested(const QPoint &)),this,SLOT(on_graphView_customContextMenuRequested(const QPoint &))); - + QObject::connect(ui->graphicsView_2, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(on_graphView_customContextMenuRequested(const QPoint &))); ui->graphicsView_2->setViewportUpdateMode(QGraphicsView::FullViewportUpdate); m_pGraphicsScene_2 = new QGraphicsScene(); - m_pGraphicsScene_2->setSceneRect(0,0,600,550); + m_pGraphicsScene_2->setSceneRect(0, 0, 600, 550); ui->graphicsView_2->setScene(m_pGraphicsScene_2); ui->graphicsView_2->setDragMode(QGraphicsView::RubberBandDrag); - - - ui->tabWidget->setTabPosition(QTabWidget::South); ui->tabWidget->setTabShape(QTabWidget::Triangular); //绑定HTTP消息响应 - connect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&))); - + connect(g_NetMgr, SIGNAL(sigNetMgr(QString, const QVariant &)), this, SLOT(slotNetMgr(QString, const QVariant &))); m_pSocket = new QTcpSocket(this); - m_EditMode = 0; m_MachineStatus = 1; //读取ini - QSettings settingsread(QCoreApplication::applicationDirPath() + "\\config\\config.ini",QSettings::IniFormat); - m_RealtimeLog = settingsread.value("Log/realtime").toInt(); + +#ifdef Q_OS_WIN32 + QSettings settingsread(QCoreApplication::applicationDirPath() + "\\config\\config.ini", QSettings::IniFormat); +#endif +#ifdef Q_OS_LINUX + QSettings settingsread(QCoreApplication::applicationDirPath() + "/config/config.ini", QSettings::IniFormat); +#endif + m_RealtimeLog = settingsread.value("Log/realtime").toInt(); LoadGraphicsConfig(0); InitChannelInfo(); - - //m_strServerIp = IP; m_nServerPort = 7305; - m_pSocket = new QTcpSocket(this); - // /*下面是几种常用的信号,更多的信号可以查看QAbstractSocket和QIODevice文档*/ // connect(m_pSocket, &QTcpSocket::connected, this, [] () { // qDebug() << "socket已连接"; // }); - // connect(m_pSocket, &QTcpSocket::disconnected, this, [] () { // qDebug() << "socket已断开连接"; // }); - // connect(m_pSocket, &QTcpSocket::stateChanged, this, [] (QAbstractSocket::SocketState socketState) { // qDebug() << "socket状态改变" << socketState; // }); - // connect(m_pSocket, &QTcpSocket::readyRead, this, [] () { // qDebug() << "有数据可读"; - // }); - //connect(m_pSocket, SIGNAL(readyRead()), this, SLOT(slotRecieve())); - connect(m_pSocket, &QTcpSocket::readyRead, this, &CRealTimeForm::slotRecieve); - connect(m_pSocket, &QTcpSocket::disconnected, this, &CRealTimeForm::disConnect); - -#ifdef QT_NO_DEBUG + //connect(m_pSocket, SIGNAL(readyRead()), this, SLOT(slotRecieve())); + connect(m_pSocket, &QTcpSocket::readyRead, this, &CRealTimeForm::slotRecieve); + connect(m_pSocket, &QTcpSocket::disconnected, this, &CRealTimeForm::disConnect); +//#ifdef QT_NO_DEBUG id1 = startTimer(2000); //参数1 间隔 单位 毫秒 //定时器第二种方式 - QTimer * timer = new QTimer(this); + QTimer *timer = new QTimer(this); //启动定时器 timer->start(500); -#endif +//#endif + +// MyGraphicsView *view = new MyGraphicsView(m_pGraphicsScene, this); + +// QVBoxLayout *layout = new QVBoxLayout(ui->tab); +// layout->setContentsMargins(0, 0, 0, 0); // 去除边距 +// layout->addWidget(view); +// setLayout(layout); } -CRealTimeForm::~CRealTimeForm() -{ +CRealTimeForm::~CRealTimeForm() { delete ui; } -void CRealTimeForm::timerEvent(QTimerEvent *ev) -{ - if(ev->timerId() == id1) - { +void CRealTimeForm::timerEvent(QTimerEvent *ev) { + if (ev->timerId() == id1) { QJsonObject allObj; allObj.insert("cmd", "09"); // 设置IP和端口号连接 m_pSocket->connectToHost(IP, m_nServerPort); - // 设置超时连接时间 m_bConnected = m_pSocket->waitForConnected(1 * 1000); // QNetworkRequest req; // QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP); - // req.setUrl(sUrl); // g_NetMgr->PostJson(req,allObj); - QJsonDocument doc(allObj); QString strData = QString(doc.toJson(QJsonDocument::Indented)); - - - int nRet = m_pSocket->write(strData.toStdString().c_str(), strlen(strData.toStdString().c_str())); - - if(nRet !=0){ + if (nRet != 0) { //qDebug() << "09 通信失败" << endl; //customLogMessageHandler(QtWarningMsg,"09通信失败"); } - } } -void CRealTimeForm::InitChannelInfo() -{ +void CRealTimeForm::InitChannelInfo() { g_channelSetting = g_SqliteDB->GetDataMultiLine("t_ChannelSetting"); g_ChannelBaseInfo.clear(); QVector().swap(g_ChannelBaseInfo); - for (int i = 0; i < g_channelSetting.size(); i++) - { - QMap mapChannelType; - mapChannelType.insert(g_channelSetting[i].sensorType,g_channelSetting[i].channelName); - g_MapChannel.insert(g_channelSetting[i].channelId,mapChannelType); + for (int i = 0; i < g_channelSetting.size(); i++) { + QMap mapChannelType; + mapChannelType.insert(g_channelSetting[i].sensorType, g_channelSetting[i].channelName); + g_MapChannel.insert(g_channelSetting[i].channelId, mapChannelType); channelBaseInfo tempchannelbaseinfo; tempchannelbaseinfo.bordNo = g_channelSetting[i].sensorModuleNo; tempchannelbaseinfo.channelID = g_channelSetting[i].channelId; @@ -158,12 +141,11 @@ void CRealTimeForm::InitChannelInfo() tempchannelbaseinfo.ChUnitDot = g_channelSetting[i].ChUnitDot; g_ChannelBaseInfo.append(tempchannelbaseinfo); } - qDebug() <<"InitChannelInfo"<< g_ChannelBaseInfo.size()<< endl; + qDebug() << "InitChannelInfo" << g_ChannelBaseInfo.size() << endl; } -void CRealTimeForm::on_graphView_customContextMenuRequested(const QPoint &pos) -{ - qDebug() << " custom menu!!!!!!!!!"<< "##"<< pos.x() << " ; "<< pos.y(); +void CRealTimeForm::on_graphView_customContextMenuRequested(const QPoint &pos) { + qDebug() << " custom menu!!!!!!!!!" << "##" << pos.x() << " ; " << pos.y(); // if(ui->graphicsView->itemAt(pos) || ui->graphicsView_2->itemAt(pos)) // return; QMenu menu(this); @@ -177,7 +159,6 @@ void CRealTimeForm::on_graphView_customContextMenuRequested(const QPoint &pos) pActionAlignmentY = menu.addAction("垂直分布"); pActionEdit = menu.addAction("编辑"); pActionSave = menu.addAction("保存"); - pActionVerticalLine->setData(1); pActionHorizontalLine->setData(2); pActionRect->setData(3); @@ -188,7 +169,6 @@ void CRealTimeForm::on_graphView_customContextMenuRequested(const QPoint &pos) pActionRect2->setData(8); pActionAlignmentX->setData(9); pActionAlignmentY->setData(10); - connect(pActionVerticalLine, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); connect(pActionHorizontalLine, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); connect(pActionRect, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); @@ -199,7 +179,6 @@ void CRealTimeForm::on_graphView_customContextMenuRequested(const QPoint &pos) connect(pActionRect2, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); connect(pActionAlignmentX, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); connect(pActionAlignmentY, SIGNAL(triggered()), this, SLOT(onTaskBoxContextMenuEvent())); - menu.exec(QCursor::pos()); //menu.exec(ui->graphicsView->mapToGlobal(pos)); // if(pActionLine == menu.exec(ui->graphicsView->mapToGlobal(pos))){ @@ -209,75 +188,69 @@ void CRealTimeForm::on_graphView_customContextMenuRequested(const QPoint &pos) // qDebug() << " Rect!!!!!!!!!"<< "##"<< pos.x() << " ; "<< pos.y(); // SetCurDrawType("Rect",pos); // } - } -void CRealTimeForm::onTaskBoxContextMenuEvent() -{ +void CRealTimeForm::onTaskBoxContextMenuEvent() { QAction *pEven = qobject_cast(this->sender()); int iType = pEven->data().toInt(); - switch (iType) - { + switch (iType) { case 1: - SetCurDrawType("vertical"); - break; + SetCurDrawType("vertical"); + break; case 2: SetCurDrawType("Horizonta"); - break; + break; case 3: - SetCurDrawType("Channel"); - break; + SetCurDrawType("Channel"); + break; case 4: - SetCurDrawType("Pixmap"); - break; + SetCurDrawType("Pixmap"); + break; case 5: SetCurDrawType("Text"); break; case 6: - SetCurDrawType("Save"); - break; + SetCurDrawType("Save"); + break; case 7: SetEdit(); - break; + break; case 8: SetCurDrawType("Rect"); - break; + break; case 9: SetAlignmentX(); - break; + break; case 10: SetAlignmentY(); - break; + break; } } -void CRealTimeForm::SetEdit() -{ +void CRealTimeForm::SetEdit() { m_EditMode = 1; LoadGraphicsConfig(1); } -void CRealTimeForm::SetAlignmentX() -{ - if(!m_EditMode){ +void CRealTimeForm::SetAlignmentX() { + if (!m_EditMode) { QMessageBox::information(this, QStringLiteral("提示"), "请先进入编辑模式!"); return; } - QMap channleAxisX; + QMap channleAxisX; QList items; - if(ui->tabWidget->currentIndex() == 0){ + if (ui->tabWidget->currentIndex() == 0) { items = m_pGraphicsScene->items(); - }else if(ui->tabWidget->currentIndex() == 1){ + } else if (ui->tabWidget->currentIndex() == 1) { items = m_pGraphicsScene_2->items(); } - foreach (QGraphicsItem *item, items) { - QGraphicsItem* graphicsItem = static_cast(item); + QGraphicsItem *graphicsItem = static_cast(item); int itemType = graphicsItem->type(); if (itemType == 10) { - QGraphicsItem* graphicsItem = static_cast(item); + QGraphicsItem *graphicsItem = static_cast(item); qDebug() << "itemType" << graphicsItem->data(0) << graphicsItem->isSelected() << endl; - if(graphicsItem->isSelected()){ - channleAxisX.insert(graphicsItem,graphicsItem->x()); + if (graphicsItem->isSelected()) { + channleAxisX.insert(graphicsItem, graphicsItem->x()); } } } @@ -285,212 +258,194 @@ void CRealTimeForm::SetAlignmentX() qSort(list); float minValue = list.first(); qDebug() << "minValue" << minValue << endl; - - QMap::iterator iter = channleAxisX.begin(); + QMap::iterator iter = channleAxisX.begin(); for (; iter != channleAxisX.end(); iter++) { - iter.key()->setPos(minValue,iter.key()->y()); + iter.key()->setPos(minValue, iter.key()->y()); } } -void CRealTimeForm::SetAlignmentY() -{ - if(!m_EditMode){ +void CRealTimeForm::SetAlignmentY() { + if (!m_EditMode) { QMessageBox::information(this, QStringLiteral("提示"), "请先进入编辑模式!"); return; } - QMap channleAxisY; + QMap channleAxisY; QList items; - if(ui->tabWidget->currentIndex() == 0){ + if (ui->tabWidget->currentIndex() == 0) { items = m_pGraphicsScene->items(); - }else if(ui->tabWidget->currentIndex() == 1){ + } else if (ui->tabWidget->currentIndex() == 1) { items = m_pGraphicsScene_2->items(); } - foreach (QGraphicsItem *item, items) { - QGraphicsItem* graphicsItem = static_cast(item); + QGraphicsItem *graphicsItem = static_cast(item); int itemType = graphicsItem->type(); if (itemType == 10) { - QGraphicsItem* graphicsItem = static_cast(item); - if(graphicsItem->isSelected()){ - channleAxisY.insert(graphicsItem,graphicsItem->y()); + QGraphicsItem *graphicsItem = static_cast(item); + if (graphicsItem->isSelected()) { + channleAxisY.insert(graphicsItem, graphicsItem->y()); } } } + qDebug() << "channleAxisY" << channleAxisY << endl; QList list = channleAxisY.values(); qSort(list); float minValue = list.first(); - qDebug() << "minValue" << minValue << endl; - - QMap::iterator iter = channleAxisY.begin(); - int i = 0; - for (; iter != channleAxisY.end(); iter++,i++) { - iter.key()->setPos(iter.key()->x(),list[0] + i * 40 ); + qDebug() << "minValue" << minValue << list.size() << endl; + QMap::iterator iter = channleAxisY.begin(); + for (int j = 0; j < list.size(); j++) { + for (iter = channleAxisY.begin(); iter != channleAxisY.end(); iter++) { + if (iter.value() == list[j]) { + qDebug() << "iter" << iter.key() << endl; + iter.key()->setPos(iter.key()->x(), list[0] + j * 40); + qDebug() << "iter X" << iter.key()->x() << "Y" << list[0] + j * 40 << endl; + } + } } } -void CRealTimeForm::on_addchannel(channelBaseInfo channelbaseInfo,QString str) -{ - +void CRealTimeForm::on_addchannel(channelBaseInfo channelbaseInfo, QString str) { QPen pen; // 定义一个画笔,设置画笔颜色和宽度 - pen.setColor(QColor(0, 0, 0,0)); + pen.setColor(QColor(0, 0, 0, 0)); pen.setWidth(1); - CMyCustomGraphicsItem* pItemGroup = new CMyCustomGraphicsItem(); - - QGraphicsRectItem* pRect = new QGraphicsRectItem(0, 0, 290, 30); + CMyCustomGraphicsItem *pItemGroup = new CMyCustomGraphicsItem(); + QGraphicsRectItem *pRect = new QGraphicsRectItem(0, 0, 290, 30); pRect->setBrush(QBrush(QColor(255, 255, 255))); pRect->setPen(pen); pRect->setPos(0, 0); - pRect->setData(1,"Rect"); + pRect->setData(1, "Rect"); pItemGroup->addToGroup(pRect); pItemGroup->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - - - QGraphicsTextItem* pTextUnits = NULL; - if(channelbaseInfo.channelType == "TACHOMETER"){ - if(str == "偏置电压" || str == "最大正向峰值" || str == "最大负向峰值" || str == "平均值"){ + QGraphicsTextItem *pTextUnits = NULL; + if (channelbaseInfo.channelType == "TACHOMETER") { + if (str == "偏置电压" || str == "最大正向峰值" || str == "最大负向峰值" || str == "平均值") { pTextUnits = new QGraphicsTextItem("V"); - }else{ + } else { pTextUnits = new QGraphicsTextItem("RPM"); } - }else if(channelbaseInfo.channelType == "ACCELEROMETER"){ - if(str == "偏置电压"){ + } else if (channelbaseInfo.channelType == "ACCELEROMETER") { + if (str == "偏置电压") { pTextUnits = new QGraphicsTextItem("V"); - } - else if(str == "最大正向峰值" || str == "最大负向峰值" || - str == "诊断峰峰值" || str == "平均值"){ + } else if (str == "最大正向峰值" || str == "最大负向峰值" || + str == "诊断峰峰值" || str == "平均值") { pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); - }else if(str == "速度峰值" || str == "速度有效值"){ + } else if (str == "速度峰值" || str == "速度有效值") { pTextUnits = new QGraphicsTextItem("mm/s"); - }else{ + } else { pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); } - }else if(channelbaseInfo.channelType == "PROXIMETER"){ - if(str == "平均值"){ + } else if (channelbaseInfo.channelType == "PROXIMETER") { + if (str == "平均值") { + pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); + } else if (str == "最大正向峰值" || str == "最大负向峰值" || + str == "诊断峰峰值") { + pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); + } else { pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); } - else if(str == "最大正向峰值" || str == "最大负向峰值" || - str == "诊断峰峰值"){ + } else if (channelbaseInfo.channelType == "THRUST") { + if (str == "平均值") { pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); - }else{ - pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); - } - }else if(channelbaseInfo.channelType == "THRUST"){ - if(str == "平均值"){ - pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); - }else if(str == "偏置电压"){ + } else if (str == "偏置电压") { pTextUnits = new QGraphicsTextItem("V"); - }else{ + } else { pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); } - }else if(channelbaseInfo.channelType == "VELOCITY"){ - if(str == "偏置电压"){ + } else if (channelbaseInfo.channelType == "VELOCITY") { + if (str == "偏置电压") { pTextUnits = new QGraphicsTextItem("V"); - }else if(str == "有效值"){ + } else if (str == "有效值") { pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); - }else if(str == "位移峰值" || str == "位移有效值"){ + } else if (str == "位移峰值" || str == "位移有效值" || str == "诊断峰峰值") { pTextUnits = new QGraphicsTextItem("um"); - }else{ - pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); + } else { + pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); } - }else if(channelbaseInfo.channelType == "SLOW_CURRENT"){ - - pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); - - }else if(channelbaseInfo.channelType == "FAST_VOLTAGE"){ - + } else if (channelbaseInfo.channelType == "SLOW_CURRENT") { pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); - }else if(channelbaseInfo.channelType == "PULSE_CURRENT"){ - + } else if (channelbaseInfo.channelType == "FAST_VOLTAGE") { pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); - } - - if(str == "峰值因子"){ + } else if (channelbaseInfo.channelType == "PULSE_CURRENT") { + pTextUnits = new QGraphicsTextItem(channelbaseInfo.sensorEngineeringUnit); + } + if (str == "峰值因子") { pTextUnits = new QGraphicsTextItem(""); } - - QGraphicsTextItem* pTextChannel = new QGraphicsTextItem(channelbaseInfo.channelName); - QGraphicsTextItem* pTextValue = new QGraphicsTextItem("0.0"); - - pTextUnits->setData(1,"units"); - pTextChannel->setData(2,"channel"); - pTextValue->setData(3,"value"); - pTextValue->setData(4,str);//特征值 - + QGraphicsTextItem *pTextChannel = new QGraphicsTextItem(channelbaseInfo.channelName); + QGraphicsTextItem *pTextValue = new QGraphicsTextItem("0.0"); + pTextUnits->setData(1, "units"); + pTextChannel->setData(2, "channel"); + pTextValue->setData(3, "value"); + pTextValue->setData(4, str); //特征值 QFont font; font.setPixelSize(16); - QFont font2 ("黑体", 18, 50); + QFont font2("黑体", 18, 50); font.setFamily(QStringLiteral("黑体")); pTextUnits->setFont(font); pTextUnits->setDefaultTextColor(QColor(27, 30, 35)); pTextChannel->setFont(font); pTextValue->setFont(font2); - pTextValue->setPos(160,-2); + pTextValue->setPos(160, -2); pTextValue->setDefaultTextColor(QColor(31, 81, 136)); - pTextChannel->setPos(0,2); + pTextChannel->setPos(0, 2); pTextChannel->setDefaultTextColor(QColor(27, 30, 35)); - pTextUnits->setPos(240,5); - - + pTextUnits->setPos(240, 5); // 设置可移动、可选择 - pItemGroup->addToGroup(pTextChannel); pItemGroup->addToGroup(pTextValue); pItemGroup->addToGroup(pTextUnits); - - pItemGroup->setData(0,channelbaseInfo.channelID); - if(ui->tabWidget->currentIndex() == 0){ + pItemGroup->setData(0, channelbaseInfo.channelID); + if (ui->tabWidget->currentIndex() == 0) { m_pGraphicsScene->addItem(pItemGroup); - }else if(ui->tabWidget->currentIndex() == 1){ + } else if (ui->tabWidget->currentIndex() == 1) { m_pGraphicsScene_2->addItem(pItemGroup); } - } -void CRealTimeForm::SetCurDrawType(QString strType) -{ - if(!m_EditMode){ +void CRealTimeForm::SetCurDrawType(QString strType) { + if (!m_EditMode) { QMessageBox::information(this, QStringLiteral("提示"), "请先进入编辑模式!"); return; } - if(strType == "vertical"){ - QGraphicsLineItem* pLine = new QGraphicsLineItem(0, 0, 100, 100); + if (strType == "vertical") { + QGraphicsLineItem *pLine = new QGraphicsLineItem(0, 0, 100, 100); pLine->setPos(0, 0); pLine->setRotation(45); pLine->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); pLine->setZValue(100); - if(ui->tabWidget->currentIndex() == 0){ + if (ui->tabWidget->currentIndex() == 0) { m_pGraphicsScene->addItem(pLine); - }else if(ui->tabWidget->currentIndex() == 1){ + } else if (ui->tabWidget->currentIndex() == 1) { m_pGraphicsScene_2->addItem(pLine); } - - }else if(strType == "Horizonta"){ - QGraphicsLineItem* pLine = new QGraphicsLineItem(0, 0, 100, 100); + } else if (strType == "Horizonta") { + QGraphicsLineItem *pLine = new QGraphicsLineItem(0, 0, 100, 100); pLine->setPos(0, 0); pLine->setRotation(-45); pLine->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); pLine->setZValue(100); - if(ui->tabWidget->currentIndex() == 0){ + if (ui->tabWidget->currentIndex() == 0) { m_pGraphicsScene->addItem(pLine); - }else if(ui->tabWidget->currentIndex() == 1){ + } else if (ui->tabWidget->currentIndex() == 1) { m_pGraphicsScene_2->addItem(pLine); } - - } - else if(strType == "Channel"){ + } else if (strType == "Channel") { CAddChannel *pAddChannel = new CAddChannel(); pAddChannel->setWindowModality(Qt::ApplicationModal); pAddChannel->show(); - connect(pAddChannel,SIGNAL(addChannel_sg(channelBaseInfo,QString)),this,SLOT(on_addchannel(channelBaseInfo,QString))); - - }else if (strType == "Pixmap"){ + connect(pAddChannel, SIGNAL(addChannel_sg(channelBaseInfo, QString)), this, SLOT(on_addchannel(channelBaseInfo, QString))); + } else if (strType == "Pixmap") { +#ifdef Q_OS_WIN32 QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitParameters.json"; +#endif +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/UnitParameters.json"; +#endif + QFile loadFile(name); - if(!loadFile.open(QIODevice::ReadOnly)) - { - qDebug() << "could't open projects json"; - return; + if (!loadFile.open(QIODevice::ReadOnly)) { + qDebug() << "could't open projects json"; + return; } QString value = loadFile.readAll(); loadFile.close(); @@ -500,51 +455,48 @@ void CRealTimeForm::SetCurDrawType(QString strType) QMessageBox::about(NULL, "提示", "读取文件错误!"); return; } - QJsonObject jsonObject = document.object(); if (jsonObject.contains(QStringLiteral("UnitStyle"))) { QJsonValue jsonValue = jsonObject.value(QStringLiteral("UnitStyle")); QString strContent = jsonValue["content"].toString(); - QGraphicsPixmapItem* pPixmap = NULL; - if(strContent == "混流式机组"){ + QGraphicsPixmapItem *pPixmap = NULL; + if (strContent == "混流式机组") { pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/hunliushi.png")); - }else if(strContent == "轴流定桨式机组" || strContent == "轴流转浆式机组"){ + } else if (strContent == "轴流定桨式机组" || strContent == "轴流转浆式机组") { pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/zhouliushi.png")); - }else if(strContent == "可逆式机组"){ + } else if (strContent == "可逆式机组") { pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/kenishi.png")); - }else if(strContent == "灯泡式机组"){ + } else if (strContent == "灯泡式机组") { pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/dengpaoshi.png")); } // 设置可移动、可选择 pPixmap->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - if(ui->tabWidget->currentIndex() == 0){ + if (ui->tabWidget->currentIndex() == 0) { m_pGraphicsScene->addItem(pPixmap); - }else if(ui->tabWidget->currentIndex() == 1){ + } else if (ui->tabWidget->currentIndex() == 1) { m_pGraphicsScene_2->addItem(pPixmap); } - pPixmap->setPos(0,0); - + pPixmap->setPos(0, 0); } - - }else if (strType == "Text") { - QGraphicsTextItem* pText = new QGraphicsTextItem("请输入..."); + } else if (strType == "Text") { + QGraphicsTextItem *pText = new QGraphicsTextItem("请输入..."); // 设置可移动、可选择 pText->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); pText->setTextInteractionFlags(Qt::TextEditorInteraction); - if(ui->tabWidget->currentIndex() == 0){ + if (ui->tabWidget->currentIndex() == 0) { m_pGraphicsScene->addItem(pText); - }else if(ui->tabWidget->currentIndex() == 1){ + } else if (ui->tabWidget->currentIndex() == 1) { m_pGraphicsScene_2->addItem(pText); } - pText->setPos(0,0); - }else if (strType == "Save") { + pText->setPos(0, 0); + } else if (strType == "Save") { SaveGraphicsConfig(); - if(m_MachineStatus == 0){ + if (m_MachineStatus == 0) { LoadGraphicsConfig(2); - }else if(m_MachineStatus == 1){ + } else if (m_MachineStatus == 1) { LoadGraphicsConfig(0); } - }else if(strType == "Rect"){ + } else if (strType == "Rect") { CustomRectItem *m_rect = new CustomRectItem(); m_rect->setPos(50, 50); m_pGraphicsScene->addItem(m_rect); @@ -552,13 +504,10 @@ void CRealTimeForm::SetCurDrawType(QString strType) m_rect->setTransformOriginPoint(25, 25); m_rect->setRotation(45); } - ui->graphicsView->update(); - } -void CRealTimeForm::SaveGraphicsConfig() -{ +void CRealTimeForm::SaveGraphicsConfig() { m_EditMode = 0; QJsonObject jsonObject; QJsonArray RectjsonArray; @@ -567,14 +516,13 @@ void CRealTimeForm::SaveGraphicsConfig() QJsonArray TextjsonArray; QJsonArray GroupjsonArray; QList items; - if(ui->tabWidget->currentIndex() == 0){ + if (ui->tabWidget->currentIndex() == 0) { items = m_pGraphicsScene->items(); - }else if(ui->tabWidget->currentIndex() == 1){ + } else if (ui->tabWidget->currentIndex() == 1) { items = m_pGraphicsScene_2->items(); } - foreach (QGraphicsItem *item, items) { - QGraphicsItem* graphicsItem = static_cast(item); + QGraphicsItem *graphicsItem = static_cast(item); int itemType = graphicsItem->type(); //qDebug() << "itemType" << itemType << endl; switch (itemType) { @@ -588,12 +536,10 @@ void CRealTimeForm::SaveGraphicsConfig() // RectjsonObject.insert("w", rect.width()); // RectjsonObject.insert("h", rect.height()); // RectjsonArray.append(RectjsonObject); - // } break; case 4://Ellipse - break; - case 6://Line - { + break; + case 6: { //Line QPointF pos = graphicsItem->pos(); QRectF rect = graphicsItem->boundingRect(); //qDebug() << "Line" << pos << rect; @@ -606,9 +552,7 @@ void CRealTimeForm::SaveGraphicsConfig() LinejsonArray.append(LinejsonObject); } break; - case 7://Pixmap - { - + case 7: { //Pixmap QPointF pos = graphicsItem->pos(); QRectF rect = graphicsItem->boundingRect(); //qDebug() << "Pixmap" << pos << rect; @@ -618,7 +562,6 @@ void CRealTimeForm::SaveGraphicsConfig() PixmapjsonObject.insert("w", rect.width()); PixmapjsonObject.insert("h", rect.height()); PixmapjsonArray.append(PixmapjsonObject); - } break; // case 8:{//Text @@ -636,39 +579,36 @@ void CRealTimeForm::SaveGraphicsConfig() // TextjsonArray.append(TextjsonObject); // } // break; - case 10:{ - QGraphicsItemGroup* pGraphicGroupItem = static_cast(graphicsItem); + case 10: { + QGraphicsItemGroup *pGraphicGroupItem = static_cast(graphicsItem); QPointF pos = pGraphicGroupItem->pos(); QRectF rect = pGraphicGroupItem->boundingRect(); channelBaseInfo temp; //qDebug() << "Group" << pos << rect; QString strChannelID = pGraphicGroupItem->data(0).toString(); //qDebug() << "pGraphicGroupItem data" << strChannelID << endl; - QJsonArray GroupRectjsonArray,GroupTextjsonArray; + QJsonArray GroupRectjsonArray, GroupTextjsonArray; QJsonObject itemjsonObject; QList items = pGraphicGroupItem->childItems(); foreach (QGraphicsItem *item, items) { - - QString itemData,itemData2 = ""; + QString itemData, itemData2 = ""; for (int i = 0; i < 5; i++) { - itemData = item->data(i).toString(); - if(itemData == "value"){ - itemData2 = item->data(i+1).toString(); - //qDebug() << "item va data" << itemData << itemData2 << i << endl; - break; - }else if (itemData == "channel") { - //qDebug() << "item ch data" << itemData << i << endl; - break; - }else if(itemData == "units"){ - //qDebug() << "item un data" << itemData << i << endl; - break; - } + itemData = item->data(i).toString(); + if (itemData == "value") { + itemData2 = item->data(i + 1).toString(); + //qDebug() << "item va data" << itemData << itemData2 << i << endl; + break; + } else if (itemData == "channel") { + //qDebug() << "item ch data" << itemData << i << endl; + break; + } else if (itemData == "units") { + //qDebug() << "item un data" << itemData << i << endl; + break; + } } - - QGraphicsItem* graphicsItem = static_cast(item); + QGraphicsItem *graphicsItem = static_cast(item); int itemType = graphicsItem->type(); //qDebug() << "itemData2" << itemData << endl; - switch (itemType) { case 3: {//Rect QPointF pos = graphicsItem->pos(); @@ -680,11 +620,10 @@ void CRealTimeForm::SaveGraphicsConfig() RectjsonObject.insert("w", rect.width()); RectjsonObject.insert("h", rect.height()); GroupRectjsonArray.append(RectjsonObject); - - - } break; - case 8:{//Text - QGraphicsTextItem* pGraphicTextItem = static_cast(graphicsItem); + } + break; + case 8: { //Text + QGraphicsTextItem *pGraphicTextItem = static_cast(graphicsItem); QPointF pos = graphicsItem->pos(); QRectF rect = graphicsItem->boundingRect(); QJsonObject TextjsonObject; @@ -695,53 +634,59 @@ void CRealTimeForm::SaveGraphicsConfig() TextjsonObject.insert("data", itemData); QColor color = pGraphicTextItem->defaultTextColor(); QRgb mRgb = qRgba(color.red(), color.green(), color.blue(), color.alpha()); - TextjsonObject.insert("color",QString::number(mRgb, 16)); - if(itemData2 != "") + TextjsonObject.insert("color", QString::number(mRgb, 16)); + if (itemData2 != "") { TextjsonObject.insert("static", itemData2); - if(itemData == "units") + } + if (itemData == "units") { temp.channelUnit = pGraphicTextItem->toPlainText(); - else if(itemData == "channel") + } else if (itemData == "channel") { temp.channelName = pGraphicTextItem->toPlainText(); + } TextjsonObject.insert("word", pGraphicTextItem->toPlainText()); GroupTextjsonArray.append(TextjsonObject); - - }break; + } + break; } - } - itemjsonObject.insert("Rect",GroupRectjsonArray); - itemjsonObject.insert("Text",GroupTextjsonArray); - itemjsonObject.insert("x",pos.x()); - itemjsonObject.insert("y",pos.y()); - itemjsonObject.insert("data",strChannelID); + itemjsonObject.insert("Rect", GroupRectjsonArray); + itemjsonObject.insert("Text", GroupTextjsonArray); + itemjsonObject.insert("x", pos.x()); + itemjsonObject.insert("y", pos.y()); + itemjsonObject.insert("data", strChannelID); GroupjsonArray.append(itemjsonObject); temp.channelID = strChannelID; g_ChannelView.append(temp); - - - }break; - default: + } break; - } + default: + break; + } } jsonObject.insert("Rect", RectjsonArray); jsonObject.insert("Line", LinejsonArray); jsonObject.insert("Pixmap", PixmapjsonArray); jsonObject.insert("Text", TextjsonArray); jsonObject.insert("Group", GroupjsonArray); - QString fileName; - if(ui->tabWidget->currentIndex() == 0){ + if (ui->tabWidget->currentIndex() == 0) { +#ifdef Q_OS_WIN32 fileName = QCoreApplication::applicationDirPath() + "\\config\\Graph1.json"; - }else{ +#endif +#ifdef Q_OS_LINUX + fileName = QCoreApplication::applicationDirPath() + "/config/Graph1.json"; +#endif + } else { +#ifdef Q_OS_WIN32 fileName = QCoreApplication::applicationDirPath() + "\\config\\Graph2.json"; +#endif +#ifdef Q_OS_LINUX + fileName = QCoreApplication::applicationDirPath() + "/config/Graph2.json"; +#endif } - - QJsonDocument jsonDoc; jsonDoc.setObject(jsonObject); //QString fileName = QFileDialog::getSaveFileName(this,"另存为 ","xxx.json"); - //if(!fileName.isEmpty()) { qDebug() << "另存为" << fileName; @@ -752,49 +697,44 @@ void CRealTimeForm::SaveGraphicsConfig() file.write(jsonDoc.toJson()); file.close(); } - } - } -void CRealTimeForm::slotDoubleClick(QGraphicsSceneMouseEvent *event) -{ +void CRealTimeForm::slotDoubleClick(QGraphicsSceneMouseEvent *event) { qDebug() << "slotDoubleClick" << event->pos() << endl; - QGraphicsItem *item = m_pGraphicsScene->itemAt(event->scenePos(),QTransform()); - QGraphicsItemGroup* pGraphicGroupItem = static_cast(item); + QGraphicsItem *item = m_pGraphicsScene->itemAt(event->scenePos(), QTransform()); + QGraphicsItemGroup *pGraphicGroupItem = static_cast(item); qDebug() << "QGraphicsItem" << pGraphicGroupItem->childItems() << endl; } -void CRealTimeForm::LoadGraphicsConfig(int type) -{ - //读取图元的数据 - - m_pGraphicsScene->clear(); - m_pGraphicsScene_2->clear(); - QPen pen; // 定义一个画笔,设置画笔颜色和宽度 - pen.setColor(QColor(0, 0, 0,0)); - pen.setWidth(1); - - - //QString fileName =QFileDialog::getOpenFileName(this,"打开文件",QDir::currentPath(), "*.json"); - for (int ii = 0; ii < ui->tabWidget->count(); ii++) { - QString strFileName = QString("Graph%1.json").arg(ii+1); +void CRealTimeForm::LoadGraphicsConfig(int type) { + //读取图元的数据 + m_pGraphicsScene->clear(); + m_pGraphicsScene_2->clear(); + QPen pen; // 定义一个画笔,设置画笔颜色和宽度 + pen.setColor(QColor(0, 0, 0, 0)); + pen.setWidth(1); + //QString fileName =QFileDialog::getOpenFileName(this,"打开文件",QDir::currentPath(), "*.json"); + for (int ii = 0; ii < ui->tabWidget->count(); ii++) { + QString strFileName = QString("Graph%1.json").arg(ii + 1); +#ifdef Q_OS_WIN32 QString fileName = QCoreApplication::applicationDirPath() + "\\config\\" + strFileName; +#endif +#ifdef Q_OS_LINUX + QString fileName = QCoreApplication::applicationDirPath() + "/config/" + strFileName; +#endif qDebug() << "打开" << fileName ; - if(!fileName.isEmpty()) - { + if (!fileName.isEmpty()) { QFile file(fileName); file.open(QIODevice::ReadOnly | QIODevice::Text); QString value = file.readAll(); file.close(); - QJsonParseError parseJsonErr; QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr); if (!(parseJsonErr.error == QJsonParseError::NoError)) { QMessageBox::about(NULL, "提示", "读取文件错误!"); return; } - QJsonObject jsonObject = document.object(); // Line字段 if (jsonObject.contains(QStringLiteral("Line"))) { @@ -805,18 +745,19 @@ void CRealTimeForm::LoadGraphicsConfig(int type) QJsonValue nameArray = array.at(i); QJsonObject key = nameArray.toObject(); QGraphicsLineItem *pLine = new QGraphicsLineItem( - 0, - 0, - key["w"].toDouble(), key["h"].toDouble()); + 0, + 0, + key["w"].toDouble(), key["h"].toDouble()); pLine->setPos(key["x"].toDouble(), key["y"].toDouble()); pLine->setRotation(key["rotation"].toInt()); pLine->setZValue(100); - if(type) - pLine->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - if(ii == 0){ - m_pGraphicsScene->addItem(pLine); - }else if(ii == 1){ - m_pGraphicsScene_2->addItem(pLine); + if (type) { + pLine->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + } + if (ii == 0) { + m_pGraphicsScene->addItem(pLine); + } else if (ii == 1) { + m_pGraphicsScene_2->addItem(pLine); } } } @@ -830,16 +771,17 @@ void CRealTimeForm::LoadGraphicsConfig(int type) QJsonValue nameArray = array.at(i); QJsonObject key = nameArray.toObject(); QGraphicsRectItem *pRect = new QGraphicsRectItem( - 0, - 0, - key["w"].toDouble(), key["h"].toDouble()); + 0, + 0, + key["w"].toDouble(), key["h"].toDouble()); pRect->setPos(key["x"].toDouble(), key["y"].toDouble()); - if(type) - pRect->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - if(ii == 0){ - m_pGraphicsScene->addItem(pRect); - }else if(ii == 1){ - m_pGraphicsScene_2->addItem(pRect); + if (type) { + pRect->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + } + if (ii == 0) { + m_pGraphicsScene->addItem(pRect); + } else if (ii == 1) { + m_pGraphicsScene_2->addItem(pRect); } } } @@ -852,12 +794,16 @@ void CRealTimeForm::LoadGraphicsConfig(int type) for (int i = 0; i < array.size(); i++) { QJsonValue nameArray = array.at(i); QJsonObject key = nameArray.toObject(); +#ifdef Q_OS_LINUX + QString name = QCoreApplication::applicationDirPath() + "/config/UnitParameters.json"; +#endif +#ifdef Q_OS_WIN32 QString name = QCoreApplication::applicationDirPath() + "\\config\\UnitParameters.json"; +#endif QFile loadFile(name); - if(!loadFile.open(QIODevice::ReadOnly)) - { - qDebug() << "could't open projects json"; - return; + if (!loadFile.open(QIODevice::ReadOnly)) { + qDebug() << "could't open projects json"; + return; } QString value = loadFile.readAll(); loadFile.close(); @@ -867,62 +813,64 @@ void CRealTimeForm::LoadGraphicsConfig(int type) QMessageBox::about(NULL, "提示", "读取文件错误!"); return; } - QJsonObject jsonObject = document.object(); if (jsonObject.contains(QStringLiteral("UnitStyle"))) { QJsonValue jsonValue = jsonObject.value(QStringLiteral("UnitStyle")); QString strContent = jsonValue["content"].toString(); - QGraphicsPixmapItem* pPixmap = NULL; + QGraphicsPixmapItem *pPixmap = NULL; QLabel *gif_anim = new QLabel(); QMovie *movie = NULL; qDebug() << "strContent" << strContent << endl; - if(strContent == "混流式机组"){ - if(type == 1 || type == 2) - pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/hunliushi.png")); - else - movie = new QMovie(QCoreApplication::applicationDirPath() + "/image/unit/hunliushi.gif"); - - }else if(strContent == "轴流定桨式机组" || strContent == "轴流转浆式机组"){ - if(type == 1 || type == 2) - pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/zhouliushi.png")); - else - movie = new QMovie(QCoreApplication::applicationDirPath() + "/image/unit/zhouliushi.gif"); + if (strContent == "混流式机组") { + if (type == 1 || type == 2) { + pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/hunliushi.png")); + } else { + movie = new QMovie(QCoreApplication::applicationDirPath() + "/image/unit/hunliushi.gif"); + } + } else if (strContent == "轴流定桨式机组" || strContent == "轴流转浆式机组") { + if (type == 1 || type == 2) { + pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/zhouliushi.png")); + } else { + movie = new QMovie(QCoreApplication::applicationDirPath() + "/image/unit/zhouliushi.gif"); + } //pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/zhouliushi.png")); - }else if(strContent == "可逆式机组"){ - if(type == 1 || type == 2) - pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/kenishi.png")); - else - movie = new QMovie(QCoreApplication::applicationDirPath() + "/image/unit/kenishi.gif"); + } else if (strContent == "可逆式机组") { + if (type == 1 || type == 2) { + pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/kenishi.png")); + } else { + movie = new QMovie(QCoreApplication::applicationDirPath() + "/image/unit/kenishi.gif"); + } //pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/kenishi.png")); - }else if(strContent == "灯泡式机组"){ - if(type == 1 || type == 2) - pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/dengpaoshi.png")); - else - movie = new QMovie(QCoreApplication::applicationDirPath() + "/image/unit/dengpaoshi.gif"); + } else if (strContent == "灯泡式机组") { + if (type == 1 || type == 2) { + pPixmap = new QGraphicsPixmapItem(QPixmap(QCoreApplication::applicationDirPath() + "/image/unit/dengpaoshi.png")); + } else { + movie = new QMovie(QCoreApplication::applicationDirPath() + "/image/unit/dengpaoshi.gif"); + } } qDebug() << "type" << type << ii << endl; - if(type){ - pPixmap->setPos(key["x"].toInt(), key["y"].toInt()); - // 设置可移动、可选择 - if(type == 1){ + if (type) { + pPixmap->setPos(key["x"].toInt(), key["y"].toInt()); + // 设置可移动、可选择 + if (type == 1) { pPixmap->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - } - if(ii == 0){ - m_pGraphicsScene->addItem(pPixmap); - }else if(ii == 1){ - m_pGraphicsScene_2->addItem(pPixmap); - } - }else{ - gif_anim->setMovie(movie); - movie->start(); - QGraphicsProxyWidget *proxy = NULL; - if(ii == 0){ - qDebug() << "strContent111" << strContent << endl; - proxy = m_pGraphicsScene->addWidget(gif_anim); - }else if(ii == 1){ - proxy = m_pGraphicsScene_2->addWidget(gif_anim); - } - proxy->setGeometry(QRectF(key["x"].toInt(),key["y"].toInt(),0,0)); + } + if (ii == 0) { + m_pGraphicsScene->addItem(pPixmap); + } else if (ii == 1) { + m_pGraphicsScene_2->addItem(pPixmap); + } + } else { + gif_anim->setMovie(movie); + movie->start(); + QGraphicsProxyWidget *proxy = NULL; + if (ii == 0) { + qDebug() << "strContent111" << strContent << endl; + proxy = m_pGraphicsScene->addWidget(gif_anim); + } else if (ii == 1) { + proxy = m_pGraphicsScene_2->addWidget(gif_anim); + } + proxy->setGeometry(QRectF(key["x"].toInt(), key["y"].toInt(), 0, 0)); } } // QGraphicsPixmapItem *pPixmap = new QGraphicsPixmapItem(QPixmap(":/image/1.png")); @@ -938,7 +886,6 @@ void CRealTimeForm::LoadGraphicsConfig(int type) // gif_anim->setMovie(movie); // movie->start(); // QGraphicsProxyWidget *proxy = m_pGraphicsScene->addWidget(gif_anim); - // QGraphicsMovieItem *pPixmap = new QGraphicsMovieItem(); // pPixmap->setPos(key["x"].toInt(), key["y"].toInt()); // QMovie movie(":/image/1.png"); @@ -950,18 +897,18 @@ void CRealTimeForm::LoadGraphicsConfig(int type) } // Text字段 if (jsonObject.contains(QStringLiteral("Text"))) { - if(type == 1){ + if (type == 1) { QGraphicsTextItem *pText = new QGraphicsTextItem("正在编辑中..."); pText->setPos(300, 530); pText->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - QFont font ( "黑体", 20, 50); + QFont font("黑体", 20, 50); font.setPixelSize(30); pText->setDefaultTextColor(QColor(255, 0, 0)); pText->setFont(font); - if(ii == 0){ - m_pGraphicsScene->addItem(pText); - }else if(ii == 1){ - m_pGraphicsScene_2->addItem(pText); + if (ii == 0) { + m_pGraphicsScene->addItem(pText); + } else if (ii == 1) { + m_pGraphicsScene_2->addItem(pText); } } QJsonValue arrayValue = jsonObject.value(QStringLiteral("Text")); @@ -970,7 +917,6 @@ void CRealTimeForm::LoadGraphicsConfig(int type) for (int i = 0; i < array.size(); i++) { QJsonValue nameArray = array.at(i); QJsonObject key = nameArray.toObject(); - QGraphicsTextItem *pText = new QGraphicsTextItem(key["word"].toString()); pText->setPos(key["x"].toInt(), key["y"].toInt()); pText->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); @@ -978,10 +924,10 @@ void CRealTimeForm::LoadGraphicsConfig(int type) QFont font; font.setPixelSize(25); pText->setFont(font); - if(ii == 0){ - m_pGraphicsScene->addItem(pText); - }else if(ii == 1){ - m_pGraphicsScene_2->addItem(pText); + if (ii == 0) { + m_pGraphicsScene->addItem(pText); + } else if (ii == 1) { + m_pGraphicsScene_2->addItem(pText); } } } @@ -992,253 +938,239 @@ void CRealTimeForm::LoadGraphicsConfig(int type) if (arrayValue.isArray()) { QJsonArray array = arrayValue.toArray(); for (int i = 0; i < array.size(); i++) { - channelBaseInfo temp; - CMyCustomGraphicsItem* pItemGroup = new CMyCustomGraphicsItem(); - if(type == 1) - pItemGroup->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - connect(pItemGroup, SIGNAL(doubleclick(QGraphicsSceneMouseEvent*)), this, SLOT(slotDoubleClick(QGraphicsSceneMouseEvent*))); - //qDebug() << array.at(i)["x"].toDouble() << array.at(i)["y"].toDouble() << endl; - - QJsonObject jsonObject = array.at(i).toObject(); - - if (jsonObject.contains(QStringLiteral("Rect"))) { - QJsonValue arrayValue = jsonObject.value(QStringLiteral("Rect")); - if (arrayValue.isArray()) { - QJsonArray array = arrayValue.toArray(); - for (int i = 0; i < array.size(); i++) { - QJsonValue nameArray = array.at(i); - QJsonObject key = nameArray.toObject(); - QGraphicsRectItem *pRect = new QGraphicsRectItem( - 0, - 0, - 290, 30); - pRect->setPos(key["x"].toDouble(), key["y"].toDouble()); - if(type == 1) - pRect->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - pRect->setBrush(QBrush(QColor(255, 255, 255))); - pRect->setPen(pen); - pItemGroup->addToGroup(pRect); - } - } - } - if (jsonObject.contains(QStringLiteral("Text"))) { - QJsonValue arrayValue = jsonObject.value(QStringLiteral("Text")); - if (arrayValue.isArray()) { - QJsonArray array = arrayValue.toArray(); - for (int i = 0; i < array.size(); i++) { - QJsonValue nameArray = array.at(i); - QJsonObject key = nameArray.toObject(); - - QGraphicsTextItem *pText = new QGraphicsTextItem(key["word"].toString()); - pText->setPos(key["x"].toDouble(), key["y"].toDouble()); - if(type){ - pText->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); - pText->setTextInteractionFlags(Qt::TextEditorInteraction); - } - QFont font; - QFont font2 ( "黑体", 18, 50); - font.setPixelSize(16); - font.setFamily(QStringLiteral("黑体")); - pText->setFont(font); - if(key["data"].toString() == "units"){ - pText->setData(1,"units"); - pText->setDefaultTextColor(QColor(27, 30, 35)); - temp.channelUnit = key["word"].toString(); - }else if(key["data"].toString() == "channel"){ - pText->setData(2,"channel"); - pText->setDefaultTextColor(QColor(27, 30, 35)); - temp.channelName = key["word"].toString(); - }else if(key["data"].toString() == "value"){ - pText->setData(3,"value"); - pText->setData(4,key["static"].toString()); - pText->setDefaultTextColor(QColor(31, 81, 136)); - pText->setFont(font2); - } - pItemGroup->addToGroup(pText); - } - } - } - pItemGroup->setPos(array.at(i)["x"].toDouble() , array.at(i)["y"].toDouble()); - pItemGroup->setData(0,array.at(i)["data"].toString()); - - if(ii == 0){ - m_pGraphicsScene->addItem(pItemGroup); - }else if(ii == 1){ - m_pGraphicsScene_2->addItem(pItemGroup); - } - - temp.channelID = array.at(i)["data"].toString(); - g_ChannelView.append(temp); + channelBaseInfo temp; + CMyCustomGraphicsItem *pItemGroup = new CMyCustomGraphicsItem(); + if (type == 1) { + pItemGroup->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + } + connect(pItemGroup, SIGNAL(doubleclick(QGraphicsSceneMouseEvent *)), this, SLOT(slotDoubleClick(QGraphicsSceneMouseEvent *))); + //qDebug() << array.at(i)["x"].toDouble() << array.at(i)["y"].toDouble() << endl; + QJsonObject jsonObject = array.at(i).toObject(); + if (jsonObject.contains(QStringLiteral("Rect"))) { + QJsonValue arrayValue = jsonObject.value(QStringLiteral("Rect")); + if (arrayValue.isArray()) { + QJsonArray array = arrayValue.toArray(); + for (int i = 0; i < array.size(); i++) { + QJsonValue nameArray = array.at(i); + QJsonObject key = nameArray.toObject(); + QGraphicsRectItem *pRect = new QGraphicsRectItem( + 0, + 0, + 290, 30); + pRect->setPos(key["x"].toDouble(), key["y"].toDouble()); + if (type == 1) { + pRect->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + } + pRect->setBrush(QBrush(QColor(255, 255, 255))); + pRect->setPen(pen); + pItemGroup->addToGroup(pRect); + } + } + } + if (jsonObject.contains(QStringLiteral("Text"))) { + QJsonValue arrayValue = jsonObject.value(QStringLiteral("Text")); + if (arrayValue.isArray()) { + QJsonArray array = arrayValue.toArray(); + for (int i = 0; i < array.size(); i++) { + QJsonValue nameArray = array.at(i); + QJsonObject key = nameArray.toObject(); + QGraphicsTextItem *pText = new QGraphicsTextItem(key["word"].toString()); + pText->setPos(key["x"].toDouble(), key["y"].toDouble()); + if (type) { + pText->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); + pText->setTextInteractionFlags(Qt::TextEditorInteraction); + } + QFont font; + QFont font2("黑体", 18, 50); + font.setPixelSize(16); + font.setFamily(QStringLiteral("黑体")); + pText->setFont(font); + if (key["data"].toString() == "units") { + pText->setData(1, "units"); + pText->setDefaultTextColor(QColor(27, 30, 35)); + temp.channelUnit = key["word"].toString(); + } else if (key["data"].toString() == "channel") { + pText->setData(2, "channel"); + pText->setDefaultTextColor(QColor(27, 30, 35)); + temp.channelName = key["word"].toString(); + } else if (key["data"].toString() == "value") { + pText->setData(3, "value"); + pText->setData(4, key["static"].toString()); + pText->setDefaultTextColor(QColor(31, 81, 136)); + pText->setFont(font2); + } + pItemGroup->addToGroup(pText); + } + } + } + pItemGroup->setPos(array.at(i)["x"].toDouble(), array.at(i)["y"].toDouble()); + pItemGroup->setData(0, array.at(i)["data"].toString()); + if (ii == 0) { + m_pGraphicsScene->addItem(pItemGroup); + } else if (ii == 1) { + m_pGraphicsScene_2->addItem(pItemGroup); + } + temp.channelID = array.at(i)["data"].toString(); + g_ChannelView.append(temp); } } } } - } + } } -void CRealTimeForm::keyPressEvent(QKeyEvent *event) -{ - //QGraphicsItem::keyPressEvent(event); - qDebug() << "键盘按下"; - if (event->key() == Qt::Key_Delete) - { - qDebug() << "press Key_Delete"; - if(ui->tabWidget->currentIndex() == 0){ +void CRealTimeForm::keyPressEvent(QKeyEvent *event) { + //QGraphicsItem::keyPressEvent(event); + qDebug() << "键盘按下"; + if (event->key() == Qt::Key_Delete) { + qDebug() << "press Key_Delete"; + if (ui->tabWidget->currentIndex() == 0) { QList items = m_pGraphicsScene->items(); foreach (QGraphicsItem *item, items) { - QGraphicsItem* graphicsItem = static_cast(item); - if(graphicsItem->isSelected()){ - qDebug() << "delete Item"; - m_pGraphicsScene->removeItem(graphicsItem); + QGraphicsItem *graphicsItem = static_cast(item); + if (graphicsItem->isSelected()) { + qDebug() << "delete Item"; + m_pGraphicsScene->removeItem(graphicsItem); } } - }else if(ui->tabWidget->currentIndex() == 1){ - QList items = m_pGraphicsScene_2->items(); - foreach (QGraphicsItem *item, items) { - QGraphicsItem* graphicsItem = static_cast(item); - if(graphicsItem->isSelected()){ + } else if (ui->tabWidget->currentIndex() == 1) { + QList items = m_pGraphicsScene_2->items(); + foreach (QGraphicsItem *item, items) { + QGraphicsItem *graphicsItem = static_cast(item); + if (graphicsItem->isSelected()) { qDebug() << "delete Item"; m_pGraphicsScene_2->removeItem(graphicsItem); - } - } - } - return; - } + } + } + } + return; + } // } -void CRealTimeForm::UpdateCharacteristic(QVector<_Charateristic>& m_vecCharateristic) -{ +void CRealTimeForm::UpdateCharacteristic(QVector<_Charateristic> &m_vecCharateristic) { QString RPM = "0"; - if(m_vecCharateristic.size() > 0){ + if (m_vecCharateristic.size() > 0) { for (int i = 0; i < m_vecCharateristic.size(); i++) { QList items; - if(ui->tabWidget->currentIndex() == 0){ + if (ui->tabWidget->currentIndex() == 0) { items = m_pGraphicsScene->items(); - }else if(ui->tabWidget->currentIndex() == 1){ + } else if (ui->tabWidget->currentIndex() == 1) { items = m_pGraphicsScene_2->items(); } - foreach (QGraphicsItem *item, items) { - QGraphicsItem* graphicsItem = static_cast(item); + QGraphicsItem *graphicsItem = static_cast(item); int itemType = graphicsItem->type(); switch (itemType) { - case 10:{ - QGraphicsItemGroup* pGraphicGroupItem = static_cast(graphicsItem); + case 10: { + QGraphicsItemGroup *pGraphicGroupItem = static_cast(graphicsItem); channelBaseInfo temp; QString strChannelID = pGraphicGroupItem->data(0).toString(); - if(strChannelID != m_vecCharateristic[i].ChannelID) + if (strChannelID != m_vecCharateristic[i].ChannelID) { continue; + } QJsonObject itemjsonObject; QList items = pGraphicGroupItem->childItems(); - QString itemData,itemData2 = ""; - foreach (QGraphicsItem *item, items){ - - for (int i = 0; i < 5; i++){ - itemData = item->data(i).toString(); - if(itemData == "value"){ - itemData2 = item->data(i+1).toString(); - //qDebug() << "item va data" << itemData << itemData2 << i << endl; - break; - }else if (itemData == "channel"){ - break; - }else if(itemData == "units"){ - break; - } + QString itemData, itemData2 = ""; + foreach (QGraphicsItem *item, items) { + for (int i = 0; i < 5; i++) { + itemData = item->data(i).toString(); + if (itemData == "value") { + itemData2 = item->data(i + 1).toString(); + //qDebug() << "item va data" << itemData << itemData2 << i << endl; + break; + } else if (itemData == "channel") { + break; + } else if (itemData == "units") { + break; + } } - - QGraphicsItem* graphicsItem = static_cast(item); + QGraphicsItem *graphicsItem = static_cast(item); int itemType = graphicsItem->type(); switch (itemType) { - case 8:{//Text - QGraphicsTextItem* pGraphicTextItem = static_cast(graphicsItem); - if(itemData == "value"){ + case 8: { //Text + QGraphicsTextItem *pGraphicTextItem = static_cast(graphicsItem); + if (itemData == "value") { //qDebug() << strChannelID << "itemData" < g_mapTriggerEvent[strChannelID].DangerOverSetpoint.toFloat() && g_mapTriggerEvent[strChannelID].DangerOver == 1)){ + if ((g_mapTriggerEvent[strChannelID].DangerOver == 1 || g_mapTriggerEvent[strChannelID].DangerUnder == 1) \ + && itemData2 == g_mapTriggerEvent[strChannelID].Characteristic) { + if ((str.toFloat() < g_mapTriggerEvent[strChannelID].DangerUnderSetpoint.toFloat() && g_mapTriggerEvent[strChannelID].DangerUnder == 1) || + (str.toFloat() > g_mapTriggerEvent[strChannelID].DangerOverSetpoint.toFloat() && g_mapTriggerEvent[strChannelID].DangerOver == 1)) { pGraphicTextItem->setDefaultTextColor(QColor(255, 0, 0)); flag = 1; - } - else{ + } else { pGraphicTextItem->setDefaultTextColor(QColor(31, 81, 136)); } } - if((g_mapTriggerEvent[strChannelID].AlertOver == 1 || g_mapTriggerEvent[strChannelID].AlertUnder == 1) \ - && itemData2 == g_mapTriggerEvent[strChannelID].Characteristic && flag == -1){ + if ((g_mapTriggerEvent[strChannelID].AlertOver == 1 || g_mapTriggerEvent[strChannelID].AlertUnder == 1) \ + && itemData2 == g_mapTriggerEvent[strChannelID].Characteristic && flag == -1) { QString strLog = "警报" + str + "," + g_mapTriggerEvent[strChannelID].AlertUnderSetpoint + "," + g_mapTriggerEvent[strChannelID].AlertOverSetpoint; - if((str.toFloat() < g_mapTriggerEvent[strChannelID].AlertUnderSetpoint.toFloat() && g_mapTriggerEvent[strChannelID].AlertUnder == 1 \ - && g_mapTriggerEvent[strChannelID].DangerUnder == 1 && str.toFloat() > g_mapTriggerEvent[strChannelID].DangerUnderSetpoint.toFloat()) ||\ + if ((str.toFloat() < g_mapTriggerEvent[strChannelID].AlertUnderSetpoint.toFloat() && g_mapTriggerEvent[strChannelID].AlertUnder == 1 \ + && g_mapTriggerEvent[strChannelID].DangerUnder == 1 && str.toFloat() > g_mapTriggerEvent[strChannelID].DangerUnderSetpoint.toFloat()) || \ (str.toFloat() > g_mapTriggerEvent[strChannelID].AlertOverSetpoint.toFloat() && g_mapTriggerEvent[strChannelID].AlertOver == 1 \ - && g_mapTriggerEvent[strChannelID].DangerOver == 0 ) ||\ + && g_mapTriggerEvent[strChannelID].DangerOver == 0) || \ (str.toFloat() > g_mapTriggerEvent[strChannelID].AlertOverSetpoint.toFloat() && g_mapTriggerEvent[strChannelID].AlertOver == 1 \ - && g_mapTriggerEvent[strChannelID].DangerOver == 1 && str.toFloat() < g_mapTriggerEvent[strChannelID].DangerOverSetpoint.toFloat())){ + && g_mapTriggerEvent[strChannelID].DangerOver == 1 && str.toFloat() < g_mapTriggerEvent[strChannelID].DangerOverSetpoint.toFloat())) { pGraphicTextItem->setDefaultTextColor(QColor(255, 165, 0)); - } - else{ + } else { pGraphicTextItem->setDefaultTextColor(QColor(31, 81, 136)); - } } sigRPM(RPM); pGraphicTextItem->setPlainText(str); } - - }break; + } + break; } - } - }break; + } + break; } } } - if(ui->tabWidget->currentIndex() == 0){ + if (ui->tabWidget->currentIndex() == 0) { ui->graphicsView->update(); - }else if(ui->tabWidget->currentIndex() == 1){ + } else if (ui->tabWidget->currentIndex() == 1) { ui->graphicsView_2->update(); } - } } -void CRealTimeForm::ParseCharacteristic(QJsonArray& arrayValue) -{ +void CRealTimeForm::ParseCharacteristic(QJsonArray &arrayValue) { m_vecCharateristic.clear(); g_Charateristic.clear(); QVector().swap(m_vecCharateristic); @@ -1246,7 +1178,7 @@ void CRealTimeForm::ParseCharacteristic(QJsonArray& arrayValue) _Charateristic tempCharateristic; for (int i = 0; i < arrayValue.size(); i++) { int enable = arrayValue.at(i)["isEnable"].toDouble(); - if(enable == 1){ + if (enable == 1) { tempCharateristic.Amp1x = arrayValue.at(i)["1xAmp"].toDouble(); tempCharateristic.Phase1x = arrayValue.at(i)["1xPhase"].toDouble(); tempCharateristic.ChannelID = arrayValue.at(i)["ChannelId"].toString(); @@ -1256,7 +1188,6 @@ void CRealTimeForm::ParseCharacteristic(QJsonArray& arrayValue) tempCharateristic.DerivedPeak = arrayValue.at(i)["DerivedPeak"].toDouble(); tempCharateristic.DiagnosisPeak = arrayValue.at(i)["DiagnosisPeak"].toDouble(); tempCharateristic.DiagnosisPk2Pk = arrayValue.at(i)["DiagnosisPk2Pk"].toDouble(); - tempCharateristic.DirectPK = arrayValue.at(i)["DirectPK"].toDouble(); tempCharateristic.FullScalePosition = arrayValue.at(i)["FullScalePosition"].toDouble(); tempCharateristic.Gap = arrayValue.at(i)["Gap"].toDouble(); @@ -1264,13 +1195,11 @@ void CRealTimeForm::ParseCharacteristic(QJsonArray& arrayValue) tempCharateristic.IntegratRMS = arrayValue.at(i)["IntegratRMS"].toDouble(); tempCharateristic.MaxValues = arrayValue.at(i)["MaxValues"].toDouble(); tempCharateristic.MinValues = arrayValue.at(i)["MinValues"].toDouble(); - tempCharateristic.MonitorPk2Pk = arrayValue.at(i)["MonitorPk2Pk"].toDouble(); tempCharateristic.Position = arrayValue.at(i)["Position"].toDouble(); tempCharateristic.RmsPkPk2Pk = arrayValue.at(i)["RmsPkPk2Pk"].toDouble(); tempCharateristic.SensorEngineeringUnit = arrayValue.at(i)["SensorEngineeringUnit"].toString(); tempCharateristic.SensorStatus = arrayValue.at(i)["SensorStatus"].toDouble(); - tempCharateristic.ZeroScalePosition = arrayValue.at(i)["ZeroScalePosition"].toDouble(); tempCharateristic.xFullScalePosition = arrayValue.at(i)["xFullScalePosition"].toDouble(); tempCharateristic.xProcessVariableName = arrayValue.at(i)["xProcessVariableName"].toString(); @@ -1279,7 +1208,10 @@ void CRealTimeForm::ParseCharacteristic(QJsonArray& arrayValue) tempCharateristic.speedRPM = arrayValue.at(i)["SpeedProfileSpeed"].toDouble(); tempCharateristic.ChUnitDot = arrayValue.at(i)["ChUnitDot"].toInt(); tempCharateristic.channelType = arrayValue.at(i)["ChannelType"].toString(); - + tempCharateristic.ChUnitDot = arrayValue.at(i)["ChUnitDot"].toInt(); + tempCharateristic.channelType = arrayValue.at(i)["ChannelType"].toString(); + tempCharateristic.InvertAlarm = arrayValue.at(i)["InvertAlarm"].toDouble(); + tempCharateristic.InvertDanger = arrayValue.at(i)["InvertDanger"].toDouble(); m_vecCharateristic.push_back(tempCharateristic); g_Charateristic.push_back(tempCharateristic); } @@ -1288,8 +1220,7 @@ void CRealTimeForm::ParseCharacteristic(QJsonArray& arrayValue) } // 接受服务返回的数据 -void CRealTimeForm::slotRecieve() -{ +void CRealTimeForm::slotRecieve() { QByteArray arrayReady = m_pSocket->readAll(); m_arrayReady += arrayReady; // customLogMessageHandler(QtDebugMsg,m_arrayReady); @@ -1314,17 +1245,16 @@ void CRealTimeForm::slotRecieve() // } } -void CRealTimeForm::disConnect() -{ +void CRealTimeForm::disConnect() { QJsonDocument doc = QJsonDocument::fromJson(m_arrayReady); QJsonObject objec = doc.object(); - if(m_RealtimeLog == 1) - customLogMessageHandler(QtDebugMsg,QString(QJsonDocument(objec).toJson())); - if(objec.contains("cmd")) - { + if (m_RealtimeLog == 1) { + customLogMessageHandler(QtDebugMsg, QString(QJsonDocument(objec).toJson())); + } + if (objec.contains("cmd")) { QJsonValue arrays_value = objec.take("cmd"); //qDebug()<<"cmd ="<(); - if(objec.contains("cmd")) - { + if (objec.contains("cmd")) { QJsonValue arrays_value = objec.take("cmd"); //qDebug()<<"cmd ="<focusItem(); - QGraphicsSceneEvent* mouseEvent = (QGraphicsSceneEvent*)e; +void CRealTimeForm::mouseDoubleClickEvent(QMouseEvent *e) { + QGraphicsItem *currentItem = m_pGraphicsScene->focusItem(); + QGraphicsSceneEvent *mouseEvent = (QGraphicsSceneEvent *)e; qDebug() << "event->type():" << mouseEvent->type(); - - if (e->type() == QEvent::MouseButtonDblClick) - { + if (e->type() == QEvent::MouseButtonDblClick) { qDebug() << "Double Click"; // 注意这里一定要返回true,表示你要过滤该事件原本的实现 QList items = m_pGraphicsScene->items(); foreach (QGraphicsItem *item, items) { qDebug() << "Double items"; - QGraphicsItem* graphicsItem = static_cast(item); - if(graphicsItem->isSelected()){ - qDebug() << "Double Click Item"; - + QGraphicsItem *graphicsItem = static_cast(item); + if (graphicsItem->isSelected()) { + qDebug() << "Double Click Item"; } } } diff --git a/realtimeform.h b/realtimeform.h index 3990519..eea8f1e 100644 --- a/realtimeform.h +++ b/realtimeform.h @@ -57,7 +57,45 @@ private: QPen pen; }; +class MyGraphicsView : public QGraphicsView +{ +public: + MyGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr) : QGraphicsView(scene, parent) {} +protected: + void mousePressEvent(QMouseEvent *event) override + { + if (event->button() == Qt::LeftButton) { + QPointF scenePos = mapToScene(event->pos()); + + // 查找点击位置的 QGraphicsItem + QGraphicsItem *item = scene()->itemAt(scenePos, transform()); + + if (item) { + // 检查该项目是否是一个 QGraphicsItemGroup + QGraphicsItemGroup *group = dynamic_cast(item); + if (group) { + qDebug() << "QGraphicsItemGroup clicked"; + + // 在组内项目上改变颜色,表示被选中 + for (QGraphicsItem *child : group->childItems()) { + QGraphicsRectItem *rectItem = dynamic_cast(child); + if (rectItem) { + rectItem->setBrush(Qt::blue); // 将颜色设置为蓝色 + } + } + } else { + qDebug() << "Other QGraphicsItem clicked"; + } + } else { + qDebug() << "No item clicked"; + } + } + + // 调用基类的鼠标按下事件处理器 + QGraphicsView::mousePressEvent(event); + } +}; class CRealTimeForm : public QWidget //, public MyItem2 { @@ -89,7 +127,7 @@ signals: protected: void keyPressEvent(QKeyEvent *event); void mouseDoubleClickEvent(QMouseEvent* e); - //void mousePressEvent(QGraphicsSceneMouseEvent *event); + private: Ui::CRealTimeForm *ui; QGraphicsScene* m_pGraphicsScene ; diff --git a/sqlitedb.cpp b/sqlitedb.cpp index 02728a9..3c8d696 100644 --- a/sqlitedb.cpp +++ b/sqlitedb.cpp @@ -1,6 +1,7 @@ #include "sqlitedb.h" SqliteDB* g_SqliteDB = NULL; +QSqlDatabase db; SqliteDB::SqliteDB() { @@ -16,13 +17,23 @@ int SqliteDB::OpenDataBase() QString path = QDir::currentPath(); qDebug("currentPath : %s", qPrintable(path)); QApplication::addLibraryPath(path); +#ifdef Q_OS_WIN32 QPluginLoader loader(QString("./plugins/sqldrivers/qsqlite.dll")); - +#endif +#ifdef Q_OS_LINUX + QPluginLoader loader(QString("./plugins/sqldrivers/qsqlite.so")); +#endif qDebug() << QSqlDatabase::drivers() << "\r\n"; - QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); + db = QSqlDatabase::addDatabase("QSQLITE"); +#ifdef Q_OS_LINUX + db.setDatabaseName(QCoreApplication::applicationDirPath() + "/config/config.db"); +#endif +#ifdef Q_OS_WIN32 db.setDatabaseName(QCoreApplication::applicationDirPath() + "\\config\\config.db"); +#endif + if (!db.open()) { qDebug() << "Error: Failed to connect database." << database.lastError(); @@ -70,6 +81,7 @@ int SqliteDB::initTable() iRet = ExeSqlData(strSql); if(iRet == 0){ strSql = "ALTER TABLE t_TriggerConfig ADD COLUMN 'operate' integer DEFAULT 1"; +<<<<<<< HEAD ExeSqlData(strSql); } @@ -78,11 +90,26 @@ int SqliteDB::initTable() iRet = ExeSqlData(strSql); if(iRet == 0){ strSql = "ALTER TABLE t_ChannelSetting ADD COLUMN 'filterStatus' integer"; +======= +>>>>>>> font ExeSqlData(strSql); } +//#ifndef NO_FILTER + strSql = QString("select count(*) from %1 where name = '%2' and sql LIKE '%%3%' ")\ + .arg("sqlite_master").arg("t_ChannelSetting").arg("filterStatus"); + iRet = ExeSqlData(strSql); + if(iRet == 0){ + strSql = "ALTER TABLE t_ChannelSetting ADD COLUMN 'filterStatus' integer"; + ExeSqlData(strSql); + } +//#endif CreateDataBase(); } +int SqliteDB::CloseDataBase() +{ + db.close(); +} int SqliteDB::CreateDataBase() { QString strCreateSQL = QString("create table if not exists t_UnitConfiguration(WorkConditionID,ChannelID,BoardNo,ChannelNoInBoard,Input,Operate);"); @@ -472,7 +499,8 @@ SqliteDB::GetTriggerEvent(QString tablename,QString whereCon) tempTriggerEvent.triggeredEquipmentID = sql_query.value(8).toInt(); tempTriggerEvent.triggeredEventName = sql_query.value(9).toString(); tempTriggerEvent.triggeredFeatureName = sql_query.value(10).toString(); - + tempTriggerEvent.triggeredFileName = sql_query.value(11).toString(); + tempTriggerEvent.triggereValue = sql_query.value(12).toString(); vecResult.append(tempTriggerEvent); } } @@ -555,9 +583,10 @@ int SqliteDB::InsertData(QString& tablename,QString& sql) QSqlQuery sql_query; QString strSql = "INSERT INTO "; strSql = strSql + tablename + sql; - qDebug() << "strSql" <