@@ -1,6 +1,7 @@ | |||||
#include "button.h" | #include "button.h" | ||||
#include <QPainter> | #include <QPainter> | ||||
#include <QStyleOptionGraphicsItem> | #include <QStyleOptionGraphicsItem> | ||||
#include <QMenu> | |||||
Button::Button(const QString &type) : Item(type) | Button::Button(const QString &type) : Item(type) | ||||
{ | { | ||||
@@ -28,3 +29,31 @@ void Button::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QW | |||||
painter->drawRect(boundingRect()); | painter->drawRect(boundingRect()); | ||||
} | } | ||||
} | } | ||||
void Button::addMenuActions(QMenu *menu) | |||||
{ | |||||
menu->addAction("置ON"); | |||||
menu->addAction("置OFF"); | |||||
} | |||||
void Button::handleMenuAction(QAction *action) | |||||
{ | |||||
if (action->text() == "复制") { | |||||
emit requestCopy(this); | |||||
} | |||||
if (action->text() == "删除") { | |||||
emit requestDelete(this); | |||||
} | |||||
if (action->text() == "对象"){ | |||||
emit requestBindRegister(this); | |||||
} | |||||
if (action->text() == "重置"){ | |||||
emit requestReset(this); | |||||
} | |||||
if (action->text() == "置ON"){ | |||||
emit requestSetON(this, true); | |||||
} | |||||
if (action->text() == "置OFF"){ | |||||
emit requestSetON(this, false); | |||||
} | |||||
} |
@@ -10,6 +10,8 @@ public: | |||||
void paint(QPainter *painter, | void paint(QPainter *painter, | ||||
const QStyleOptionGraphicsItem *option, | const QStyleOptionGraphicsItem *option, | ||||
QWidget *) override; | QWidget *) override; | ||||
void addMenuActions(QMenu *menu) override; | |||||
void handleMenuAction(QAction *action) override; | |||||
}; | }; | ||||
#endif // BUTTON_H | #endif // BUTTON_H |
@@ -39,6 +39,7 @@ signals: | |||||
void requestBindRegister(Item*); | void requestBindRegister(Item*); | ||||
void requestCompare(Item*); | void requestCompare(Item*); | ||||
void requestReset(Item*); | void requestReset(Item*); | ||||
void requestSetON(Item*, bool isON); | |||||
protected: | protected: | ||||
void MenuActions(QMenu *menu); | void MenuActions(QMenu *menu); | ||||
@@ -112,6 +112,8 @@ void MainWindow::newPage(bool isPlc) | |||||
registerManager, &RegisterManager::bindItem); | registerManager, &RegisterManager::bindItem); | ||||
connect(newView, &MyGraphicsView::itemResetRegister, | connect(newView, &MyGraphicsView::itemResetRegister, | ||||
registerManager, &RegisterManager::unbindItem); | registerManager, &RegisterManager::unbindItem); | ||||
connect(newView, &MyGraphicsView::itemSetON, | |||||
modbusManager, &ModbusManager::writeRegister); | |||||
} | } | ||||
} | } | ||||
@@ -52,6 +52,7 @@ void MyGraphicsView::dropEvent(QDropEvent *event) | |||||
connect(item, &Item::requestBindRegister, this, &MyGraphicsView::onItemRequestBindRegister); | connect(item, &Item::requestBindRegister, this, &MyGraphicsView::onItemRequestBindRegister); | ||||
connect(item, &Item::requestCompare, this, &MyGraphicsView::onItemRequestCompare); | connect(item, &Item::requestCompare, this, &MyGraphicsView::onItemRequestCompare); | ||||
connect(item, &Item::requestReset, this, &MyGraphicsView::onItemRequestReset); | connect(item, &Item::requestReset, this, &MyGraphicsView::onItemRequestReset); | ||||
connect(item, &Item::requestSetON,this, &MyGraphicsView::onItemRequestSetON); | |||||
scene()->addItem(item); | scene()->addItem(item); | ||||
event->acceptProposedAction(); | event->acceptProposedAction(); | ||||
@@ -241,6 +242,18 @@ void MyGraphicsView::onItemRequestReset(Item *item) | |||||
} | } | ||||
} | } | ||||
void MyGraphicsView::onItemRequestSetON(Item *item, bool isON) | |||||
{ | |||||
if (isON) | |||||
{ | |||||
emit itemSetON(item->registerId(), 1); | |||||
} | |||||
else | |||||
{ | |||||
emit itemSetON(item->registerId(), 0); | |||||
} | |||||
} | |||||
void MyGraphicsView::mousePressEvent(QMouseEvent *event) | void MyGraphicsView::mousePressEvent(QMouseEvent *event) | ||||
{ | { | ||||
if (event->button() == Qt::LeftButton) { | if (event->button() == Qt::LeftButton) { | ||||
@@ -31,6 +31,7 @@ protected: | |||||
signals: | signals: | ||||
void itemBoundToRegister(Item*, QString); | void itemBoundToRegister(Item*, QString); | ||||
void itemResetRegister(Item*, QString); | void itemResetRegister(Item*, QString); | ||||
void itemSetON(QString, quint16); | |||||
private: | private: | ||||
Item* anchorItemAt(const QPoint& viewPos, Item::AnchorType& anchorType); | Item* anchorItemAt(const QPoint& viewPos, Item::AnchorType& anchorType); | ||||
@@ -51,6 +52,7 @@ public slots: | |||||
void onItemRequestBindRegister(Item*); | void onItemRequestBindRegister(Item*); | ||||
void onItemRequestCompare(Item*); | void onItemRequestCompare(Item*); | ||||
void onItemRequestReset(Item*); | void onItemRequestReset(Item*); | ||||
void onItemRequestSetON(Item*, bool isON); | |||||
}; | }; | ||||
#endif // MYGRAPHICSVIEW_H | #endif // MYGRAPHICSVIEW_H |