add monitor save/load functions
This commit is contained in:
parent
c7f51ae47d
commit
a4e3b529bd
|
|
@ -864,7 +864,7 @@ struct DiagramInfo //组态图结构信息
|
|||
QString sName;
|
||||
QString sTag;
|
||||
QVariant parentId;
|
||||
QString sBasePageName; //基模组态图名称
|
||||
QString sBasePageName; //父组态图名称
|
||||
};
|
||||
|
||||
struct DiagramContent {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
#ifndef CORNERMONITORLAUNCHER_H
|
||||
#define CORNERMONITORLAUNCHER_H
|
||||
|
||||
/***************cavas中的monitor临时加载菜单*****************/
|
||||
#include <QWidget>
|
||||
|
||||
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
|
||||
|
|
@ -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<QPair<QString,QUuid>>); //保存选中的监控
|
||||
|
||||
void updateMonitorListFromDB(); //从数据库更新监控列表
|
||||
void updateMonitorListFromDB(int dest = 0); //从数据库更新监控列表 0更新外部lst 1更新内部lst
|
||||
|
||||
QMap<QString,QPair<DrawingPanel*,QMdiSubWindow*>> getMapDraw() {return m_mapDrawPanel;}
|
||||
QMap<QString,QPair<EditPanel*,QMdiSubWindow*>> getMapEdit() {return m_mapEditPanel;}
|
||||
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> getMapMonitor() {return m_mapMonitorPanel;}
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent* event) override;
|
||||
private:
|
||||
void removePanel(PowerEntity*);
|
||||
void calculateLauncherVisible();
|
||||
private:
|
||||
QMap<QString,QPair<DrawingPanel*,QMdiSubWindow*>> m_mapDrawPanel; //工程模panel
|
||||
QMap<QString,QPair<EditPanel*,QMdiSubWindow*>> m_mapEditPanel; //编辑时
|
||||
QMap<QString,QPair<MonitorPanel*,QMdiSubWindow*>> m_mapMonitorPanel; //监控时panel
|
||||
int _pageIndex;
|
||||
QString _curPage;
|
||||
CornerMonitorLauncher* _cornerButton; //简略菜单呼出按钮
|
||||
LoadMonitorPageDlg* _loadMonitorPageDlg;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -127,6 +127,7 @@ public:
|
|||
void activateModel() {Q_EMIT activatePage(_pageName);} //发送激活信号(点击)
|
||||
void startHttpRequest(); //开始请求数据(运行时)
|
||||
void setCavas(DiagramCavas* p) {_cavas = p;} //设置所属顶层容器
|
||||
DiagramCavas* getCavas() {return _cavas;}
|
||||
|
||||
QMap<QUuid,GraphicsProjectModelItem*> getProjectItems(){return _nodeItem;}
|
||||
QMap<QUuid,GraphicsBaseModelItem*> getBaseModelItems(){return _baseItem;}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
#ifndef LOADMONITORPAGEDLG_H
|
||||
#define LOADMONITORPAGEDLG_H
|
||||
|
||||
/*******************加载运行时*********************/
|
||||
#include <QDialog>
|
||||
#include <QStandardItem>
|
||||
|
||||
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<QString,QUuid>);
|
||||
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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
#include "cornerMonitorLauncher.h"
|
||||
#include <QMdiArea>
|
||||
#include <QPainter>
|
||||
#include <QMouseEvent>
|
||||
#include <QMenu>
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
@ -2,6 +2,8 @@
|
|||
#include <QMessageBox>
|
||||
#include <QJsonObject>
|
||||
#include <QStandardItem>
|
||||
#include <QLibrary>
|
||||
#include <QMetaMethod>
|
||||
#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 <QLibrary>
|
||||
#include <QMetaMethod>
|
||||
#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<QPair<QString,QUuid>> lst)
|
|||
QMessageBox::information(NULL, QString("提示"), QString::fromWCharArray(L"保存成功"));
|
||||
}
|
||||
|
||||
void DiagramCavas::updateMonitorListFromDB()
|
||||
void DiagramCavas::updateMonitorListFromDB(int dest)
|
||||
{
|
||||
if(dest != 0)
|
||||
_loadMonitorPageDlg->clearItems();
|
||||
|
||||
QList<monitorPageInfo> 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,104 @@
|
|||
#include "loadMonitorPageDlg.h"
|
||||
#include "ui_loadMonitorPageDlg.h"
|
||||
#include "global.h"
|
||||
#include "tools.h"
|
||||
#include <QUuid>
|
||||
|
||||
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<QString,QUuid> 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;
|
||||
}
|
||||
|
||||
|
|
@ -5,6 +5,7 @@
|
|||
#include <QToolBar>
|
||||
#include <QVBoxLayout>
|
||||
#include <QJsonDocument>
|
||||
#include <QToolButton>
|
||||
#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();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,107 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>loadMonitorPageDlg</class>
|
||||
<widget class="QDialog" name="loadMonitorPageDlg">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>182</width>
|
||||
<height>355</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>12</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>21</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgb(192, 192, 192);</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color: rgb(4, 4, 4);
|
||||
font: 12pt "Microsoft YaHei UI";</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>载入运行时</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>103</width>
|
||||
<height>18</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTreeView" name="treeView"/>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QPushButton" name="btn_ok">
|
||||
<property name="text">
|
||||
<string>确定</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="btn_cancel">
|
||||
<property name="text">
|
||||
<string>取消</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue