#pragma once #include "Common.h" class WindowAppUiView; class SelectWidget; class VButton; class VLabel; class VLineEdit; class WindowRuntimeView : public QWidget { Q_OBJECT public: WindowRuntimeView(QWidget *parent); ~WindowRuntimeView(); // 从设计页面中拷贝 bool copyFrom(WindowAppUiView* pDesignView); protected: // 初始化Logo贴图 void initLogoImage(); // VButton的点击处理 void onButtonClicked(VButton* pClickButton); // 绘制界面背景 void paintEvent(QPaintEvent*) override; //======================================================== // 复杂控件同步相关函数 // 解析复杂控件传入的扩展属性(用于执行扩展属性中的数值链接同步) bool parseComplexPropertyEx(QWidget* pWidget, CONTROL_PROPERTY_EX* propertyEx); // 解析Datalink信息 bool parseDatalink(DataLink& dataLink, VARIABLE*& pVar); // 自定义控件的槽函数 protected slots: // 控件点击事件的总体调度 void slotControlClickedDispatcher(); //========================================================== // 用于控件同步的消息 // 当Edit控件内容变更时 void onVEditChanged(const QString& strText); // 当Value控件内容变更时 void onValueControlChanged(const QString& strText); // ComboBox变更消息 void onVComboChanged(const int nIndex); // ListBox变更消息 void onVListChanged(const int nRow); // RadioBox变更消息 void onVRadioChanged(bool checked); // CheckBox变更消息 void onVCheckChanged(int state); // 执行控件的首次同步 void doFirstSync(QWidget* pUiControl, VALUE_TYPE controlType, const VARIABLE* pVariable = nullptr); protected: // Logo 贴图 QPixmap* m_pLogoImage; QList m_pControls; };