From a4e3b529bd095cfecd9fdb1c81946d7ceeeb47a4 Mon Sep 17 00:00:00 2001 From: baiYue Date: Mon, 8 Dec 2025 20:05:07 +0800 Subject: [PATCH] add monitor save/load functions --- common/include/global.h | 2 +- diagramCavas/CMakeLists.txt | 5 + diagramCavas/include/cornerMonitorLauncher.h | 29 +++++ diagramCavas/include/diagramCavas.h | 13 ++- .../graphicsDataModel/fixedPortsModel.h | 1 + diagramCavas/include/loadMonitorPageDlg.h | 36 ++++++ diagramCavas/include/monitorPanel.h | 2 + diagramCavas/source/cornerMonitorLauncher.cpp | 77 +++++++++++++ diagramCavas/source/diagramCavas.cpp | 72 ++++++++++-- diagramCavas/source/loadMonitorPageDlg.cpp | 104 +++++++++++++++++ diagramCavas/source/monitorPanel.cpp | 32 +++++- diagramCavas/ui/loadMonitorPageDlg.ui | 107 ++++++++++++++++++ diagramUtils/source/dataBase.cpp | 5 +- include/mainwindow.h | 2 +- source/mainwindow.cpp | 10 +- source/monitorPagesDlg.cpp | 1 + 16 files changed, 473 insertions(+), 25 deletions(-) create mode 100644 diagramCavas/include/cornerMonitorLauncher.h create mode 100644 diagramCavas/include/loadMonitorPageDlg.h create mode 100644 diagramCavas/source/cornerMonitorLauncher.cpp create mode 100644 diagramCavas/source/loadMonitorPageDlg.cpp create mode 100644 diagramCavas/ui/loadMonitorPageDlg.ui diff --git a/common/include/global.h b/common/include/global.h index d522314..4e25397 100644 --- a/common/include/global.h +++ b/common/include/global.h @@ -864,7 +864,7 @@ struct DiagramInfo //组态图结构信息 QString sName; QString sTag; QVariant parentId; - QString sBasePageName; //基模组态图名称 + QString sBasePageName; //父组态图名称 }; struct DiagramContent { diff --git a/diagramCavas/CMakeLists.txt b/diagramCavas/CMakeLists.txt index 8bc8abc..81d37bb 100644 --- a/diagramCavas/CMakeLists.txt +++ b/diagramCavas/CMakeLists.txt @@ -18,6 +18,8 @@ set(DIAGRAMCAVAS_HEADER_FILES include/monitorDetailAttributeDlg.h include/monitorDisplaySettingDlg.h include/monitorItemPreviewDlg.h + include/loadMonitorPageDlg.h + include/cornerMonitorLauncher.h include/itemPropertyDlg.h include/propertyContentDlg.h include/serializable.h @@ -137,6 +139,8 @@ set(DIAGRAMCAVAS_SOURCE_FILES source/monitorDetailAttributeDlg.cpp source/monitorDisplaySettingDlg.cpp source/monitorItemPreviewDlg.cpp + source/loadMonitorPageDlg.cpp + source/cornerMonitorLauncher.cpp source/itemPropertyDlg.cpp source/propertyContentDlg.cpp source/statusBar.cpp @@ -258,6 +262,7 @@ set(UI_FILES ui/monitorConfigDlg.ui ui/monitorDetailAttributeDlg.ui ui/monitorDisplaySettingDlg.ui + ui/loadMonitorPageDlg.ui ) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) diff --git a/diagramCavas/include/cornerMonitorLauncher.h b/diagramCavas/include/cornerMonitorLauncher.h new file mode 100644 index 0000000..323b480 --- /dev/null +++ b/diagramCavas/include/cornerMonitorLauncher.h @@ -0,0 +1,29 @@ +#ifndef CORNERMONITORLAUNCHER_H +#define CORNERMONITORLAUNCHER_H + +/***************cavas中的monitor临时加载菜单*****************/ +#include + +class QMdiArea; + +class CornerMonitorLauncher : public QWidget +{ + Q_OBJECT +public: + CornerMonitorLauncher(QMdiArea *parent = nullptr); + ~CornerMonitorLauncher(); + + void showDlg(); + void positionAtCorner(); +signals: + void openLoadMonitorDlg(); +protected: + void paintEvent(QPaintEvent* event) override; + void mousePressEvent(QMouseEvent* event) override; +private: + void showQuickMenu(); +private: + QMdiArea* m_mdiArea; +}; + +#endif diff --git a/diagramCavas/include/diagramCavas.h b/diagramCavas/include/diagramCavas.h index 3fc3a0f..33bd4fc 100644 --- a/diagramCavas/include/diagramCavas.h +++ b/diagramCavas/include/diagramCavas.h @@ -16,6 +16,8 @@ class EditPanel; class GraphicsBaseModelItem; class EditBaseItem; class MonitorPanel; +class CornerMonitorLauncher; +class LoadMonitorPageDlg; class DIAGRAM_DESIGNER_PUBLIC DiagramCavas : public QMdiArea { @@ -28,6 +30,8 @@ public: DrawingPanel* getPanel(QString); EditPanel* getEditPanel(QString); MonitorPanel* getMonitorPanel(QString); + + void updateSubPos(); public: void initial(); signals: @@ -42,7 +46,7 @@ public slots: void onSignal_savePage(); void onSignal_loadPage(PowerEntity* p); void onSignal_loadEdit(const QString&,QUuid); - void onSignal_loadMonitor(PowerEntity* p); + void onSignal_loadMonitor(PowerEntity* p,QString sParent); void runPage(const QString); //运行时 void onSignal_runPage(); void onSignal_deletePage(); @@ -82,19 +86,24 @@ public slots: void onSignal_monitorSelected(DiagramInfo); //监控选中 void onSignal_saveMonitor(QList>); //保存选中的监控 - void updateMonitorListFromDB(); //从数据库更新监控列表 + void updateMonitorListFromDB(int dest = 0); //从数据库更新监控列表 0更新外部lst 1更新内部lst QMap> getMapDraw() {return m_mapDrawPanel;} QMap> getMapEdit() {return m_mapEditPanel;} QMap> getMapMonitor() {return m_mapMonitorPanel;} +protected: + void resizeEvent(QResizeEvent* event) override; private: void removePanel(PowerEntity*); + void calculateLauncherVisible(); private: QMap> m_mapDrawPanel; //工程模panel QMap> m_mapEditPanel; //编辑时 QMap> m_mapMonitorPanel; //监控时panel int _pageIndex; QString _curPage; + CornerMonitorLauncher* _cornerButton; //简略菜单呼出按钮 + LoadMonitorPageDlg* _loadMonitorPageDlg; }; #endif diff --git a/diagramCavas/include/graphicsDataModel/fixedPortsModel.h b/diagramCavas/include/graphicsDataModel/fixedPortsModel.h index be31f7a..7947b06 100644 --- a/diagramCavas/include/graphicsDataModel/fixedPortsModel.h +++ b/diagramCavas/include/graphicsDataModel/fixedPortsModel.h @@ -127,6 +127,7 @@ public: void activateModel() {Q_EMIT activatePage(_pageName);} //发送激活信号(点击) void startHttpRequest(); //开始请求数据(运行时) void setCavas(DiagramCavas* p) {_cavas = p;} //设置所属顶层容器 + DiagramCavas* getCavas() {return _cavas;} QMap getProjectItems(){return _nodeItem;} QMap getBaseModelItems(){return _baseItem;} diff --git a/diagramCavas/include/loadMonitorPageDlg.h b/diagramCavas/include/loadMonitorPageDlg.h new file mode 100644 index 0000000..0d55cb9 --- /dev/null +++ b/diagramCavas/include/loadMonitorPageDlg.h @@ -0,0 +1,36 @@ +#ifndef LOADMONITORPAGEDLG_H +#define LOADMONITORPAGEDLG_H + +/*******************加载运行时*********************/ +#include +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class loadMonitorPageDlg; } +QT_END_NAMESPACE + +struct DiagramInfo; + +class LoadMonitorPageDlg : public QDialog +{ + Q_OBJECT +public: + LoadMonitorPageDlg(QWidget *parent = nullptr); + ~LoadMonitorPageDlg(); + + void initial(); + void updateItems(QString,QPair); + void clearItems(); +signals: + void monitorSelected(DiagramInfo); +public slots: + void onOkClicked(); + void onCancelClicked(); +private: + QStandardItem* findTopLevelItem(const QString& name); //查找顶层项 +private: + Ui::loadMonitorPageDlg *ui; + QStandardItemModel* _pModel; +}; + +#endif diff --git a/diagramCavas/include/monitorPanel.h b/diagramCavas/include/monitorPanel.h index b1e5632..1f291e2 100644 --- a/diagramCavas/include/monitorPanel.h +++ b/diagramCavas/include/monitorPanel.h @@ -48,6 +48,7 @@ public: public slots: void onRunClicked(); void onStopClicked(); + void onSaveClicked(); void onConfigClicked(); void onItemConfigClicked(); void onConncecClicked(); @@ -64,6 +65,7 @@ private: MonitorDetailAttributeDlg* _detailAttributeDlg; MonitorDisplaySettingDlg* _displaySettingDlg; QMenu* _menuSetting; + QMenu* _menuFile; }; #endif diff --git a/diagramCavas/source/cornerMonitorLauncher.cpp b/diagramCavas/source/cornerMonitorLauncher.cpp new file mode 100644 index 0000000..569a38f --- /dev/null +++ b/diagramCavas/source/cornerMonitorLauncher.cpp @@ -0,0 +1,77 @@ +#include "cornerMonitorLauncher.h" +#include +#include +#include +#include + +CornerMonitorLauncher::CornerMonitorLauncher(QMdiArea* parent) + : QWidget(parent) + ,m_mdiArea(parent) +{ + setFixedSize(48, 48); + setWindowFlags(Qt::Tool | Qt::FramelessWindowHint); + setAttribute(Qt::WA_TranslucentBackground); + + positionAtCorner(); +} + +CornerMonitorLauncher::~CornerMonitorLauncher() +{ + +} + +void CornerMonitorLauncher::showDlg() +{ + show(); + positionAtCorner(); +} + +void CornerMonitorLauncher::paintEvent(QPaintEvent* event) +{ + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing); + + // 绘制圆形按钮 + painter.setBrush(QColor(255, 255, 255, 240)); + painter.setPen(QPen(QColor(200, 200, 200), 1)); + painter.drawEllipse(rect().adjusted(1, 1, -1, -1)); + + // 绘制+号 + painter.setPen(QPen(QColor(100, 100, 100), 2)); + painter.drawLine(width()/2 - 8, height()/2, width()/2 + 8, height()/2); + painter.drawLine(width()/2, height()/2 - 8, width()/2, height()/2 + 8); +} + +void CornerMonitorLauncher::mousePressEvent(QMouseEvent* event) +{ + if (event->button() == Qt::LeftButton) { + showQuickMenu(); + } +} + +void CornerMonitorLauncher::showQuickMenu() { + QMenu menu; + menu.setStyleSheet(R"( + QMenu { + background: white; + border: 1px solid #dee2e6; + border-radius: 4px; + } + QMenu::item { + padding: 6px 20px 6px 10px; + } + QMenu::item:selected { + background: #f8f9fa; + } + )"); + + menu.addAction("加载运行时监控", [&]{ emit openLoadMonitorDlg();}); + menu.exec(mapToGlobal(QPoint(0, height()))); +} + +void CornerMonitorLauncher::positionAtCorner() { + QPoint topRight = m_mdiArea->mapToGlobal(m_mdiArea->rect().topRight()); + int x = topRight.x() - width() - 20; + int y = topRight.y() + 20; + move(x, y); +} diff --git a/diagramCavas/source/diagramCavas.cpp b/diagramCavas/source/diagramCavas.cpp index 2cc2192..1ea8dfa 100644 --- a/diagramCavas/source/diagramCavas.cpp +++ b/diagramCavas/source/diagramCavas.cpp @@ -2,6 +2,8 @@ #include #include #include +#include +#include #include "drawingPanel.h" #include "monitorPanel.h" #include "diagramCavas.h" @@ -14,11 +16,13 @@ #include "diagramEditor/editPanel.h" #include "graphicsDataModel/diagramEditorModel.h" #include "basePropertyManager.h" -#include -#include +#include "cornerMonitorLauncher.h" +#include "loadMonitorPageDlg.h" DiagramCavas::DiagramCavas(QWidget *parent) : QMdiArea(parent) + ,_cornerButton(nullptr) + ,_loadMonitorPageDlg(nullptr) { _pageIndex = 0; } @@ -49,6 +53,12 @@ MonitorPanel* DiagramCavas::getMonitorPanel(QString sPage) return nullptr; } +void DiagramCavas::updateSubPos() +{ + if(_cornerButton) + _cornerButton->positionAtCorner(); +} + void DiagramCavas::initial() { //todo:读取数据并初始化 @@ -57,6 +67,16 @@ void DiagramCavas::initial() { TopologyManager::instance().createDiagram(QString::number(info.id),info.name); } + _cornerButton = new CornerMonitorLauncher(this); + _cornerButton->showDlg(); + _loadMonitorPageDlg = new LoadMonitorPageDlg(this); + connect(_cornerButton,&CornerMonitorLauncher::openLoadMonitorDlg,this,[&](){ + if(_loadMonitorPageDlg){ + updateMonitorListFromDB(1); + _loadMonitorPageDlg->show(); + } + }); + connect(_loadMonitorPageDlg,&LoadMonitorPageDlg::monitorSelected,this,&DiagramCavas::onSignal_monitorSelected); } void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode,QString parent) @@ -94,6 +114,7 @@ void DiagramCavas::onSignal_addDrawingPanel(PowerEntity* pItem,DiagramMode mode, connect(pModel,&FixedPortsModel::monitorCreated,this,&DiagramCavas::onSignal_monitorCreated); connect(pModel,&FixedPortsModel::monitorItems,this,&DiagramCavas::onSignal_monitorItemCreated); } + calculateLauncherVisible(); } void DiagramCavas::onSignal_addGraphicsItem(modelStateInfo& info) @@ -190,10 +211,6 @@ void DiagramCavas::onSignal_savePage() break; } } - else if(pPanel->getMode() == DM_baseModel) - { - - } } } @@ -226,11 +243,11 @@ void DiagramCavas::onSignal_loadEdit(const QString& sProject,QUuid uid) } } -void DiagramCavas::onSignal_loadMonitor(PowerEntity* p) +void DiagramCavas::onSignal_loadMonitor(PowerEntity* p,QString sParent) { if(!m_mapMonitorPanel.contains(p->name())) { - onSignal_addDrawingPanel(p,DiagramMode::DM_run); + onSignal_addDrawingPanel(p,DiagramMode::DM_run,sParent); QJsonObject context = DataBase::GetInstance()->getMonitorContextByTag(p->name()); m_mapMonitorPanel[p->name()].first->loadNodes(context); } @@ -285,10 +302,10 @@ void DiagramCavas::onSignal_panelDelete(const QString& name,int nType) } else if(nType == 2){ MonitorPanel* pPanel = m_mapMonitorPanel.take(name).first; - if(m_mapMonitorPanel.isEmpty()) this->removeSubWindow(pPanel); delete pPanel; } + calculateLauncherVisible(); } void DiagramCavas::onSignal_createEntity(EntityInfo info) @@ -435,6 +452,17 @@ void DiagramCavas::removePanel(PowerEntity* pEntity) } } +void DiagramCavas::calculateLauncherVisible() +{ + if(_cornerButton){ + if (m_mapDrawPanel.isEmpty() && m_mapEditPanel.isEmpty() && m_mapMonitorPanel.isEmpty()) { + _cornerButton->setVisible(true); + } else { + _cornerButton->setVisible(false); + } + } +} + void DiagramCavas::onCreateTestBaseModelDiagram() { PowerEntity* pEntity; @@ -450,6 +478,12 @@ void DiagramCavas::onCreateTestBaseModelDiagram() } } +void DiagramCavas::resizeEvent(QResizeEvent* event) +{ + if(_cornerButton) + _cornerButton->positionAtCorner(); +} + /*******************************************************/ void DiagramCavas::onSignal_createEditPanel(QString sName,QUuid uid) @@ -598,7 +632,7 @@ void DiagramCavas::onSignal_monitorSelected(DiagramInfo info) PowerEntity* pEntity = TopologyManager::instance().findDiagram(info.id.toString(),ModelFunctionType::RuntimeModel); if(pEntity) { - onSignal_loadMonitor(pEntity); + onSignal_loadMonitor(pEntity,info.sBasePageName); } } @@ -626,15 +660,29 @@ void DiagramCavas::onSignal_saveMonitor(QList> lst) QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存成功")); } -void DiagramCavas::updateMonitorListFromDB() +void DiagramCavas::updateMonitorListFromDB(int dest) { + if(dest != 0) + _loadMonitorPageDlg->clearItems(); + QList lstMonitor = DataBase::GetInstance()->getAllMonitor(); for(auto &info:lstMonitor) { auto p = TopologyManager::instance().findDiagram(info.uid.toString(),ModelFunctionType::RuntimeModel); if(!p){ TopologyManager::instance().createDiagram(info.uid.toString(),info.name,ModelFunctionType::RuntimeModel); - emit updateMonitorList(info.parent,qMakePair(info.name,info.uid)); + if(dest == 0) + emit updateMonitorList(info.parent,qMakePair(info.name,info.uid)); + else{ + _loadMonitorPageDlg->updateItems(info.parent,qMakePair(info.name,info.uid)); + } + } + else{ //存在直接发送 + if(dest == 0) + emit updateMonitorList(info.parent,qMakePair(info.name,info.uid)); + else{ + _loadMonitorPageDlg->updateItems(info.parent,qMakePair(info.name,info.uid)); + } } } } diff --git a/diagramCavas/source/loadMonitorPageDlg.cpp b/diagramCavas/source/loadMonitorPageDlg.cpp new file mode 100644 index 0000000..194672c --- /dev/null +++ b/diagramCavas/source/loadMonitorPageDlg.cpp @@ -0,0 +1,104 @@ +#include "loadMonitorPageDlg.h" +#include "ui_loadMonitorPageDlg.h" +#include "global.h" +#include "tools.h" +#include + +LoadMonitorPageDlg::LoadMonitorPageDlg(QWidget *parent) + : QDialog(parent) + , ui(new Ui::loadMonitorPageDlg) + ,_pModel(nullptr) +{ + ui->setupUi(this); + this->setWindowFlags(Qt::FramelessWindowHint | windowFlags()); + initial(); +} + +LoadMonitorPageDlg::~LoadMonitorPageDlg() +{ + delete ui; +} + +void LoadMonitorPageDlg::initial() +{ + _pModel = new QStandardItemModel(this); + ui->treeView->setModel(_pModel); + ui->treeView->setHeaderHidden(true); + + connect(ui->btn_ok,&QPushButton::clicked,this,&LoadMonitorPageDlg::onOkClicked); + connect(ui->btn_cancel,&QPushButton::clicked,this,&LoadMonitorPageDlg::onCancelClicked); +} + +void LoadMonitorPageDlg::updateItems(QString sProj,QPair pair) +{ + QStandardItem* topLevelItem = findTopLevelItem(sProj); + if (topLevelItem) { + // 如果存在,直接在该项下插入子项 + QStandardItem* childItem = new QStandardItem(pair.first); + childItem->setData(pair.second); + topLevelItem->appendRow(childItem); + } else { + // 如果不存在,创建新的顶层项并插入子项 + QStandardItem* newTopLevelItem = new QStandardItem(sProj); + QStandardItem* childItem = new QStandardItem(pair.first); + childItem->setData(pair.second); + newTopLevelItem->appendRow(childItem); + _pModel->appendRow(newTopLevelItem); + } + ui->treeView->expandAll(); +} + +void LoadMonitorPageDlg::clearItems() +{ + if(_pModel){ + QStandardItem *root = _pModel->invisibleRootItem(); //先清空model + int rowCount = root->rowCount(); + if (rowCount > 0) { + _pModel->removeRows(0, rowCount); + } + } +} + +void LoadMonitorPageDlg::onOkClicked() +{ + QItemSelectionModel* selectionModel = ui->treeView->selectionModel(); + if (selectionModel && selectionModel->hasSelection()) { + // 获取当前选中的索引 + QModelIndex currentIndex = selectionModel->currentIndex(); + if (currentIndex.isValid()) { + QStandardItem* item = _pModel->itemFromIndex(currentIndex); + int nLevel = getLevel(item); + if(nLevel == 0 || nLevel == -1) //顶层不响应 + return; + QStandardItem* parent = item->parent(); + if(item) + { + DiagramInfo info; + info.id = item->data(Qt::UserRole+1).toUuid(); + info.sName = item->text(); + info.sBasePageName = parent->text(); + emit monitorSelected(info); + } + hide(); + } + } + + +} + +void LoadMonitorPageDlg::onCancelClicked() +{ + hide(); +} + +QStandardItem* LoadMonitorPageDlg::findTopLevelItem(const QString& name) +{ + for (int i = 0; i < _pModel->rowCount(); ++i) { + QStandardItem* item = _pModel->item(i); + if (item && item->text() == name) { + return item; + } + } + return nullptr; +} + diff --git a/diagramCavas/source/monitorPanel.cpp b/diagramCavas/source/monitorPanel.cpp index 572c920..6f1feeb 100644 --- a/diagramCavas/source/monitorPanel.cpp +++ b/diagramCavas/source/monitorPanel.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "graphicsDataModel/fixedPortsModel.h" #include "graphicsItem/graphicsBaseItem.h" #include "powerEntity.h" @@ -19,6 +20,7 @@ #include "monitorDisplaySettingDlg.h" #include "dataBase.h" #include "projectModelManager.h" +#include "diagramCavas.h" MonitorPanel::MonitorPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode) : BaseDrawingPanel(pEntity,parent,mode) @@ -29,6 +31,7 @@ MonitorPanel::MonitorPanel(PowerEntity* pEntity,QWidget *parent,DiagramMode mode ,_menuSetting(nullptr) ,_detailAttributeDlg(nullptr) ,_displaySettingDlg(nullptr) + ,_menuFile(nullptr) { m_pStatusBar->setButtonVisible(false); initial(); @@ -62,13 +65,27 @@ void MonitorPanel::createToolBar() _toolBar = new QToolBar(this); _toolBar->setStyleSheet("QToolBar { background-color: palette(window); border: none; }"); - QAction *runAction = new QAction("运行", this); - connect(runAction, &QAction::triggered, this, &MonitorPanel::onRunClicked); - _toolBar->addAction(runAction); + _menuFile = new QMenu("文件", this); - QAction *stopAction = new QAction("停止", this); + // 保存操作 + QAction *saveAction = _menuFile->addAction("保存"); + connect(saveAction, &QAction::triggered, this, &MonitorPanel::onSaveClicked); + + _menuFile->addSeparator(); // 添加分隔线 + + // 运行操作 + QAction *runAction = _menuFile->addAction("运行"); + connect(runAction, &QAction::triggered, this, &MonitorPanel::onRunClicked); + + // 停止操作 + QAction *stopAction = _menuFile->addAction("停止"); connect(stopAction, &QAction::triggered, this, &MonitorPanel::onStopClicked); - _toolBar->addAction(stopAction); + + QToolButton *fileButton = new QToolButton(this); + fileButton->setText("文件"); + fileButton->setMenu(_menuFile); + fileButton->setPopupMode(QToolButton::InstantPopup); + _toolBar->addWidget(fileButton); QAction *configAction = new QAction("参数配置", this); connect(configAction, &QAction::triggered, this, &MonitorPanel::onConfigClicked); @@ -398,6 +415,11 @@ void MonitorPanel::onStopClicked() } +void MonitorPanel::onSaveClicked() +{ + _pModel->getCavas()->onSignal_savePage(); +} + void MonitorPanel::onConfigClicked() { _pConfigDlg->show(); diff --git a/diagramCavas/ui/loadMonitorPageDlg.ui b/diagramCavas/ui/loadMonitorPageDlg.ui new file mode 100644 index 0000000..2089223 --- /dev/null +++ b/diagramCavas/ui/loadMonitorPageDlg.ui @@ -0,0 +1,107 @@ + + + loadMonitorPageDlg + + + + 0 + 0 + 182 + 355 + + + + + 12 + + + + Dialog + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 16777215 + 21 + + + + background-color: rgb(192, 192, 192); + + + + 0 + + + 0 + + + + + color: rgb(4, 4, 4); +font: 12pt "Microsoft YaHei UI"; + + + 载入运行时 + + + + + + + Qt::Orientation::Horizontal + + + + 103 + 18 + + + + + + + + + + + + + + + + 确定 + + + + + + + 取消 + + + + + + + + + + diff --git a/diagramUtils/source/dataBase.cpp b/diagramUtils/source/dataBase.cpp index 68d0371..19c6597 100644 --- a/diagramUtils/source/dataBase.cpp +++ b/diagramUtils/source/dataBase.cpp @@ -2684,9 +2684,12 @@ QUuid DataBase::getMonitorIdByName(QString name) bool DataBase::updateMonitor(QString tag,QJsonObject context) { + QJsonDocument contextDoc(context); + QString strCon = contextDoc.toJson(QJsonDocument::Compact); + QString strSQL = "UPDATE diagramui_monitor_page SET context = ? WHERE tag = ?"; QVariantList params; - params.append(context); + params.append(strCon); params.append(tag); try diff --git a/include/mainwindow.h b/include/mainwindow.h index b53e9e7..508262d 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -36,7 +36,7 @@ public: protected: virtual void closeEvent(QCloseEvent* event) override; virtual void changeEvent(QEvent* event) override; - + virtual void moveEvent(QMoveEvent *event) override; private: void initializeDockUi(); void initializeAction(); diff --git a/source/mainwindow.cpp b/source/mainwindow.cpp index 54bcd91..2ece151 100644 --- a/source/mainwindow.cpp +++ b/source/mainwindow.cpp @@ -18,8 +18,6 @@ #include "graphicElementsPanel.h" #include "operationCommand.h" #include "electricElementsBox.h" -#include "electricElementsPanel.h" -#include "toolBox.h" #include "loadPageDlg.h" #include "projectModelDlg.h" #include "topologyView.h" @@ -75,6 +73,12 @@ void CMainWindow::changeEvent(QEvent* event) //m_pDrawingPanel->grahpicsViewZoomFit(); } +void CMainWindow::moveEvent(QMoveEvent *event) +{ + if(m_pDiagramCavas) + m_pDiagramCavas->updateSubPos(); +} + void CMainWindow::initializeDockUi() { m_pElectricElementsBox = new ElectricElementsBox(); @@ -117,7 +121,7 @@ void CMainWindow::initializeDockUi() m_pMonitorItemsDock->hide(); m_pMonitorPagesDock->hide(); - m_pDiagramCavas = new DiagramCavas(); + m_pDiagramCavas = new DiagramCavas(this); m_pDiagramCavas->initial(); this->setCentralWidget(m_pDiagramCavas); connect(m_pElectricElementsBox,&ElectricElementsBox::addEletricItem,m_pDiagramCavas,&DiagramCavas::onSignal_addGraphicsItem); diff --git a/source/monitorPagesDlg.cpp b/source/monitorPagesDlg.cpp index b7de6e0..29c8e7d 100644 --- a/source/monitorPagesDlg.cpp +++ b/source/monitorPagesDlg.cpp @@ -59,6 +59,7 @@ void MonitorPagesDlg::onItemClicked(const QModelIndex &index) DiagramInfo info; info.id = item->data(Qt::UserRole+1).toUuid(); info.sName = item->text(); + info.sBasePageName = parent->text(); emit monitorSelected(info); } }