From 078c108f2634198bed6260cd201acebdc27954dc Mon Sep 17 00:00:00 2001 From: email <15737449156@163.com> Date: Wed, 13 Aug 2025 21:24:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=B2=E5=8F=A3=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E4=B8=8Emodbus=E7=89=88=E6=9C=AC=EF=BC=8C=E5=8F=B3?= =?UTF-8?q?=E9=94=AEhmi=E5=B1=9E=E6=80=A7=E4=BF=AE=E6=94=B9=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- untitled/hmidocument.cpp | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/untitled/hmidocument.cpp b/untitled/hmidocument.cpp index 0e5fd07..c185354 100644 --- a/untitled/hmidocument.cpp +++ b/untitled/hmidocument.cpp @@ -185,38 +185,34 @@ void HMIDocument::showContextMenu(QPoint globalPos) } else { - // 选中图形:显示完整菜单 + // 选中图形:显示基础菜单 QAction *propAction = menu.addAction("属性"); QAction *copyAction = menu.addAction("复制"); QAction *pasteAction = menu.addAction("粘贴"); QAction *deleteAction = menu.addAction("删除"); - QAction *onAction = menu.addAction("置为ON"); - QAction *offAction = menu.addAction("置为OFF"); - pasteAction->setEnabled(!m_copiedItemsData.isEmpty()); - connect(propAction, &QAction::triggered, this, &HMIDocument::showItemProperties); connect(copyAction, &QAction::triggered, this, &HMIDocument::copySelectedItems); connect(pasteAction, &QAction::triggered, this, &HMIDocument::pasteItems); connect(deleteAction, &QAction::triggered, this, &HMIDocument::deleteSelectedItems); - // ON/OFF动作(针对指示灯和按钮) - connect(onAction, &QAction::triggered, [=]() { - if (auto ellipse = dynamic_cast(clickedItem)) { - ellipse->setBrush(ellipse->onColor()); - } else if (auto rect = dynamic_cast(clickedItem)) { - rect->setBrush(rect->pressedColor()); - } - }); - connect(offAction, &QAction::triggered, [=]() { - if (auto ellipse = dynamic_cast(clickedItem)) { - ellipse->setBrush(ellipse->offColor()); - } else if (auto rect = dynamic_cast(clickedItem)) { - rect->setBrush(rect->releasedColor()); - } - }); - } + // 仅对按钮(矩形)显示ON/OFF选项,指示灯(椭圆)不显示 + if (dynamic_cast(clickedItem)) { + QAction *onAction = menu.addAction("置为ON"); + QAction *offAction = menu.addAction("置为OFF"); + connect(onAction, &QAction::triggered, [=]() { + if (auto rect = dynamic_cast(clickedItem)) { + rect->setBrush(rect->pressedColor()); + } + }); + connect(offAction, &QAction::triggered, [=]() { + if (auto rect = dynamic_cast(clickedItem)) { + rect->setBrush(rect->releasedColor()); + } + }); + } + } menu.exec(globalPos + QPoint(10, 10)); } @@ -286,7 +282,7 @@ void HMIDocument::showItemProperties() // 线圈地址输入 - 使用SpinBox替代LineEdit QSpinBox *coilAddrSpin = new QSpinBox(); - coilAddrSpin->setRange(0, 65535); // 设置PLC线圈地址常见范围 + coilAddrSpin->setRange(0, 4000); // 设置PLC线圈地址常见范围 // 尝试从名称解析现有地址(如果之前用数字作为名称) bool isNumber; int addr = namedItem->name().toInt(&isNumber);