综合平台编辑器
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.4 KiB

  1. #ifndef HMIMODULE_H
  2. #define HMIMODULE_H
  3. #include "ui_MainWindow.h"
  4. #include "customgraphicsscene.h"
  5. #include "modbusmanager.h"
  6. #include <QObject>
  7. #include <QList>
  8. #include <QMap>
  9. #include <QVector>
  10. class HMIModule : public QObject
  11. {
  12. Q_OBJECT
  13. public:
  14. explicit HMIModule(Ui::MainWindow* ui, QObject *parent = nullptr);
  15. void setButtonIcon(QAbstractButton* button, const QString& iconPath);
  16. void init();
  17. bool saveToFile(const QString& filePath);
  18. bool openFromFile(const QString& filePath);
  19. // 重置页面,清空所有页,只保留一个空的第一页
  20. void resetPages();
  21. bool isModified() const; // 判断是否有未保存的修改
  22. void setModified(bool modified); // 设置修改状态
  23. ModbusManager* getModbusManager() const;
  24. signals:
  25. void pageAdded(int pageNumber, int index);
  26. void pageRemoved(int pageNumber, int index);
  27. void logMessageGenerated(const QString& message);
  28. private slots:
  29. void prepareToCreateButton();
  30. void prepareToCreateIndicator();
  31. void onComponentCreated(HmiComponent* item);
  32. void onComponentSelected(HmiComponent* item);
  33. void onCopyRequested();
  34. void onPasteRequested(const QPointF& scenePos);
  35. void onDeleteRequested();
  36. void addPage();
  37. void deletePage();
  38. void prePage();
  39. void nextPage();
  40. void onPageAdded(int pageNumber, int index);
  41. void onPageRemoved(int pageNumber, int index);
  42. void onChangeOnColorRequested(HmiComponent* item);
  43. void onChangeOffColorRequested(HmiComponent* item);
  44. private:
  45. void setupNewComponent(HmiComponent* item);
  46. void updateComponentsByAddress(int address, bool on);
  47. private:
  48. Ui::MainWindow* ui_;
  49. CustomGraphicsScene* m_scene;
  50. ComponentType m_copiedType;
  51. QColor m_copiedColor;
  52. // 新增这些成员变量
  53. QColor m_copiedOnColor;
  54. QColor m_copiedOffColor;
  55. QString m_copiedComponentName;
  56. int m_copiedAddress = 0;
  57. // 新增复制尺寸变量
  58. double m_copiedWidth = 0.0;
  59. double m_copiedHeight = 0.0;
  60. bool m_hasCopiedItem = false; // 指示当前是否已经有组件被复制
  61. int m_pageCount = 1; // 初始化页面计数器
  62. QList<int> m_availablePageNumbers; // 存储可用的页面编号 (有序列表)
  63. QList<int> m_pageOrder; // 维护页面顺序
  64. bool m_isModified = false; // 添加一个修改标志变量
  65. ModbusManager *m_modbusManager;
  66. };
  67. #endif // HMIMODULE_H