综合平台编辑器
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.7 KiB

  1. #ifndef HMIMODULE_H
  2. #define HMIMODULE_H
  3. #include <QObject>
  4. #include "ui_MainWindow.h"
  5. #include "customgraphicsscene.h"
  6. #include <QList>
  7. #include <QMap>
  8. #include <QVector>
  9. class HMIModule : public QObject
  10. {
  11. Q_OBJECT
  12. public:
  13. explicit HMIModule(Ui::MainWindow* ui, QObject *parent = nullptr);
  14. void setButtonIcon(QAbstractButton* button, const QString& iconPath);
  15. void init();
  16. bool saveToFile(const QString& filePath);
  17. bool openFromFile(const QString& filePath);
  18. signals:
  19. void pageAdded(int pageNumber, int index);
  20. void pageRemoved(int pageNumber, int index);
  21. void logMessageGenerated(const QString& message);
  22. private slots:
  23. void prepareToCreateButton();
  24. void prepareToCreateIndicator();
  25. void onComponentCreated(HmiComponent* item);
  26. void onComponentSelected(HmiComponent* item);
  27. void onCopyRequested();
  28. void onPasteRequested(const QPointF& scenePos);
  29. void onDeleteRequested();
  30. void addPage();
  31. void deletePage();
  32. void prePage();
  33. void nextPage();
  34. void onPageAdded(int pageNumber, int index);
  35. void onPageRemoved(int pageNumber, int index);
  36. void onChangeOnColorRequested(HmiComponent* item);
  37. void onChangeOffColorRequested(HmiComponent* item);
  38. private:
  39. void setupNewComponent(HmiComponent* item);
  40. private:
  41. Ui::MainWindow* ui_;
  42. CustomGraphicsScene* m_scene;
  43. ComponentType m_copiedType;
  44. QColor m_copiedColor;
  45. bool m_hasCopiedItem = false; // 指示当前是否已经有组件被复制
  46. int m_pageCount = 1; // 初始化页面计数器
  47. QList<int> m_availablePageNumbers; // 存储可用的页面编号 (有序列表)
  48. QList<int> m_pageOrder; // 维护页面顺序
  49. };
  50. #endif // HMIMODULE_H