123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #pragma once
- #include <QDialog>
- #include "ui_DialogDataLink.h"
- #include "Common.h"
- /// <summary>
- /// 用于配置属性表中Datalink信息的对话框
- /// </summary>
- class VControlObject;
- class DialogDataLink : public QDialog
- {
- Q_OBJECT
- public:
- DialogDataLink(
- const QString& strPropertyName,
- VControlObject* pCurrentObject,
- const DataLink& value,
- QWidget *parent = Q_NULLPTR
- );
- ~DialogDataLink();
- DataLink getValue() const;
- // 设置数值
- void setValue(const DataLink& value);
- //// 将如下几个函数设置为静态公开函数(用于反序列化使用)
- //
- //// 绑定dll中的信息用于后续同步
- //static bool bindSyncInformation(const DataLink& dataLink, VControlObject* pVControl);
- //// 绑定dll中的信息用于后续同步(控件类型)
- //static bool bindSyncByControl(TOOL* pTool, _INTERFACE* pDllInf, VControlObject* pVControl);
- //// 绑定dll中的信息用于后续同步(数值类型)
- //static bool bindSyncByValue(TOOL* pTool, _INTERFACE* pDllInf, VControlObject* pVControl);
- private:
- Ui::DialogDataLink ui;
- protected:
- // 对话框初始化
- void initUI();
- // 初始化数据链接分组
- void initComboGroup();
- // 按照一些特殊的属性名称来分组(例如Image中的图像链接、HObject、HTuple链接等等)
- void initComboGroupByPropertyName();
- // 按Button类型初始化分组
- void initComboGroupByButton();
- // 按ValueControl类型初始化分组
- void initComboGroupByValue();
- // 其他控件类型初始化分组
- void initComboGroupByOther();
- // 添加系统命令
- void AddSystemCmdToTree();
- // 添加选中的Pou Tool到树形结构中
- void AddPouToolsToTree(const QString& strGroup);
- // 按Button类型添加Pou Tool
- void AddPouToolsByButton(POU* pPou);
- // 按ValueControl类型添加Pou Tool
- void AddPouToolsByValue(POU* pPou);
- // 按复杂控件类型添加Pou Tool
- void AddPouToolsByComplexValue(POU* pPou);
- // 按其他控件类型添加Pou Tool
- void AddPouToolsByOther(POU* pPou);
- // 按照一些特殊的属性名称添加Pou Tool
- void AddPouToolsByPropertyName(POU* pPou);
- // 添加兼容的Pou变量到树形结构中
- void AddPouVariablesToTree(const QString& strGroup);
- // 添加Tool子节点
- QTreeWidgetItem* AddToolTreeItem(const QString& toolName);
- // 添加接口子节点
- void AddInterfaceTreeItem(QTreeWidgetItem* pToolItem, const _INTERFACE* pInf);
- // 保存Button类型的选择信息
- bool saveSelectionByButton(QTreeWidgetItem* pItem);
- // 保存其他类型的选择信息
- bool saveSelectionByOther(QTreeWidgetItem* pItem);
- private slots:
- // select按钮
- void onButtonSelectClicked();
- // clear按钮
- void onButtonClearClicked();
- // Combo框选择变更时,需要切换对应的变量列表
- void onComboGroupChanged(int nIndex);
- protected:
- VControlObject* m_pControlObject;
- DataLink m_DataLink;
- QString m_strPropertyName;
- QString m_strPropertyShortName; // 去掉后面数字后的属性名
- // 保存属性字段和数值类型的对应关系,用于绑定
- QMap<QString, VALUE_TYPE> m_propertiesNameToType;
- };
|