#ifndef HMIMODULE_H #define HMIMODULE_H #include "ui_MainWindow.h" #include "customgraphicsscene.h" #include "modbusmanager.h" #include #include #include #include class HMIModule : public QObject { Q_OBJECT public: explicit HMIModule(Ui::MainWindow* ui, QObject *parent = nullptr); void setButtonIcon(QAbstractButton* button, const QString& iconPath); void init(); bool saveToFile(const QString& filePath); bool openFromFile(const QString& filePath); // 重置页面,清空所有页,只保留一个空的第一页 void resetPages(); bool isModified() const; // 判断是否有未保存的修改 void setModified(bool modified); // 设置修改状态 ModbusManager* getModbusManager() const; signals: void pageAdded(int pageNumber, int index); void pageRemoved(int pageNumber, int index); void logMessageGenerated(const QString& message); private slots: void prepareToCreateButton(); void prepareToCreateIndicator(); void onComponentCreated(HmiComponent* item); void onComponentSelected(HmiComponent* item); void onCopyRequested(); void onPasteRequested(const QPointF& scenePos); void onDeleteRequested(); void addPage(); void deletePage(); void prePage(); void nextPage(); void onPageAdded(int pageNumber, int index); void onPageRemoved(int pageNumber, int index); void onChangeOnColorRequested(HmiComponent* item); void onChangeOffColorRequested(HmiComponent* item); private: void setupNewComponent(HmiComponent* item); void updateComponentsByAddress(int address, bool on); private: Ui::MainWindow* ui_; CustomGraphicsScene* m_scene; ComponentType m_copiedType; QColor m_copiedColor; // 新增这些成员变量 QColor m_copiedOnColor; QColor m_copiedOffColor; QString m_copiedComponentName; int m_copiedAddress = 0; // 新增复制尺寸变量 double m_copiedWidth = 0.0; double m_copiedHeight = 0.0; bool m_hasCopiedItem = false; // 指示当前是否已经有组件被复制 int m_pageCount = 1; // 初始化页面计数器 QList m_availablePageNumbers; // 存储可用的页面编号 (有序列表) QList m_pageOrder; // 维护页面顺序 bool m_isModified = false; // 添加一个修改标志变量 ModbusManager *m_modbusManager; }; #endif // HMIMODULE_H