#ifndef HMIMODULE_H #define HMIMODULE_H #include #include "ui_MainWindow.h" #include "customgraphicsscene.h" #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); 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); private: Ui::MainWindow* ui_; CustomGraphicsScene* m_scene; ComponentType m_copiedType; QColor m_copiedColor; bool m_hasCopiedItem = false; // 指示当前是否已经有组件被复制 int m_pageCount = 1; // 初始化页面计数器 QList m_availablePageNumbers; // 存储可用的页面编号 (有序列表) QList m_pageOrder; // 维护页面顺序 }; #endif // HMIMODULE_H