12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #pragma
- #include "WindowAppBlockBase.h"
- ///////////////////////////////////////////////////////////////////
- // Port类型的工具功能块图 (Function Block Diagram, TBD)
- //
- // 总体处理思路:
- //
- // 双击左键进入编辑状态,并选择当前的文字
- // 此时可以利用左键选择文本以及编辑操作,右键保留剪切复制等操作
- // 回车键离开焦点,离开焦点时,做编辑成功处理,发射信号给父对象以做其他处理
- // 鼠标右键触发的离开焦点做取消操作处理,恢复之前编辑的文本
- // 右键菜单也会触发离开焦点这里直接进入父类的离开焦点事件,需要注意
- // 其他离开焦点的事件,也做编辑成功的处理,发射信号给父对象
- // 2021-3-20 此类已经废弃,以后Port类型的Block也不能直接编辑了
- class WindowAppBlockPortOld : public QGraphicsTextItem, public WindowAppBlockBase
- {
- Q_OBJECT
- // 添加这一行,否则会出现警告:Warning: qobject_cast to QGraphicsItem will not work!
- Q_INTERFACES(QGraphicsItem)
- public:
- WindowAppBlockPortOld(const TOOL_EX* pTool, QGraphicsItem* parent = nullptr);
- public:
- // 添加接口
- void addItemInterfaces();
- // 设定本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;
- protected slots:
- // 显示右键菜单
- void contextMenuEvent(QGraphicsSceneContextMenuEvent* event) override;
- // 用于处理双击编辑文字的相关事件
-
- // 获得焦点时
- void focusInEvent(QFocusEvent* event) override;
- // 焦点移出时
- void focusOutEvent(QFocusEvent* event) override;
- // 键盘按下时
- void keyPressEvent(QKeyEvent* event) override;
- // 鼠标单击
- void mousePressEvent(QGraphicsSceneMouseEvent* event)override;
- // 鼠标双击
- void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) override;
- // 菜单 - Edit
- void onMenuEdit();
- signals:
- // 编辑完毕信号(TODO: 本信号暂未使用)
- void inputOverSignal(QString strText);
-
- // 用户选择变更信号
- void selectedChange(QGraphicsItem* item);
- // 功能块位置改变
- void blockMoveSignal(QGraphicsItem* item);
- private:
- // 根据用户的输入实时更新矩形区域的尺寸
- void UpdateRect();
- protected:
- // 当前用户录入的文字
- QString m_strInput;
- // Port功能块特有的编辑数值功能项
- QAction* editAction;
- };
|