소스 검색

按钮置ON和置OFF

master
鹏鹏 李 2 일 전
부모
커밋
1fbd1d1168
6개의 변경된 파일49개의 추가작업 그리고 0개의 파일을 삭제
  1. +29
    -0
      button.cpp
  2. +2
    -0
      button.h
  3. +1
    -0
      item.h
  4. +2
    -0
      mainwindow.cpp
  5. +13
    -0
      mygraphicsview.cpp
  6. +2
    -0
      mygraphicsview.h

+ 29
- 0
button.cpp 파일 보기

@@ -1,6 +1,7 @@
#include "button.h"
#include <QPainter>
#include <QStyleOptionGraphicsItem>
#include <QMenu>

Button::Button(const QString &type) : Item(type)
{
@@ -28,3 +29,31 @@ void Button::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QW
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);
}
}

+ 2
- 0
button.h 파일 보기

@@ -10,6 +10,8 @@ public:
void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *) override;
void addMenuActions(QMenu *menu) override;
void handleMenuAction(QAction *action) override;
};

#endif // BUTTON_H

+ 1
- 0
item.h 파일 보기

@@ -39,6 +39,7 @@ signals:
void requestBindRegister(Item*);
void requestCompare(Item*);
void requestReset(Item*);
void requestSetON(Item*, bool isON);

protected:
void MenuActions(QMenu *menu);


+ 2
- 0
mainwindow.cpp 파일 보기

@@ -112,6 +112,8 @@ void MainWindow::newPage(bool isPlc)
registerManager, &RegisterManager::bindItem);
connect(newView, &MyGraphicsView::itemResetRegister,
registerManager, &RegisterManager::unbindItem);
connect(newView, &MyGraphicsView::itemSetON,
modbusManager, &ModbusManager::writeRegister);
}
}



+ 13
- 0
mygraphicsview.cpp 파일 보기

@@ -52,6 +52,7 @@ void MyGraphicsView::dropEvent(QDropEvent *event)
connect(item, &Item::requestBindRegister, this, &MyGraphicsView::onItemRequestBindRegister);
connect(item, &Item::requestCompare, this, &MyGraphicsView::onItemRequestCompare);
connect(item, &Item::requestReset, this, &MyGraphicsView::onItemRequestReset);
connect(item, &Item::requestSetON,this, &MyGraphicsView::onItemRequestSetON);
scene()->addItem(item);

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)
{
if (event->button() == Qt::LeftButton) {


+ 2
- 0
mygraphicsview.h 파일 보기

@@ -31,6 +31,7 @@ protected:
signals:
void itemBoundToRegister(Item*, QString);
void itemResetRegister(Item*, QString);
void itemSetON(QString, quint16);

private:
Item* anchorItemAt(const QPoint& viewPos, Item::AnchorType& anchorType);
@@ -51,6 +52,7 @@ public slots:
void onItemRequestBindRegister(Item*);
void onItemRequestCompare(Item*);
void onItemRequestReset(Item*);
void onItemRequestSetON(Item*, bool isON);
};

#endif // MYGRAPHICSVIEW_H

불러오는 중...
취소
저장