1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #pragma once
- #include "WindowAppBlockBase.h"
- /// <summary>
- /// Port类型的工具功能块图 (Port Block Diagram, PBD)
- /// </summary>
- class WindowAppBlockPort : public WindowAppBlockBase
- {
- Q_OBJECT
- // 添加这一行,否则会出现警告:Warning: qobject_cast to QGraphicsItem will not work!
- Q_INTERFACES(QGraphicsItem)
- public:
- WindowAppBlockPort(TOOL* newPort, POU* Pou, bool bShowOnly = false, QGraphicsObject* parent = nullptr);
- // 添加接口
- void addItemInterfaces();
- // 绑定一个接口
- void bindInterface(_INTERFACE* pNewInf);
- // 设定本Item的自定义类型
- enum { Type = ITEM_TYPE_PORT };
- int type() const
- {
- // 针对该 item 启用 qgraphicsitem_cast
- return Type;
- }
- protected:
- void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override;
- // QVariant itemChange(GraphicsItemChange change, const QVariant& value) override;
- // QRectF boundingRect() const override;
- // 绘制功能块
- void DrawBlock(QPainter* painter);
- protected slots:
- //// 显示右键菜单
- //void contextMenuEvent(QGraphicsSceneContextMenuEvent* event) override;
- // 鼠标单击
- // void mousePressEvent(QGraphicsSceneMouseEvent* event)override;
- // 鼠标双击
- void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) override;
- protected:
- // 根据用户的输入实时更新矩形区域的尺寸
- virtual void updateRect();
- // 各个菜单的响应函数
- // 初始化功能块的右键菜单
- void createContextMenu();
- // 菜单 - Delete
- void onMenuDelete();
- // 2022-3-22 为Port中显示的接口名称做调整(局部变量不加Pou前缀,全局变量加Pou前缀)
- QString genPortInfName(const _INTERFACE* pNewInf);
- protected:
- // 本port上绑定的接口显示的文字
- QString m_strInfTitle;
- };
|