您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

52 行
1.4 KiB

  1. #pragma once
  2. #include <QWidget>
  3. #include <QListWidget>
  4. #include <QGraphicsView>
  5. #include <QGraphicsScene>
  6. #include <QLabel>
  7. #include <QPushButton>
  8. #include <QList>
  9. class HmiEditorWidget : public QWidget {
  10. Q_OBJECT
  11. public:
  12. explicit HmiEditorWidget(QWidget* parent = nullptr);
  13. ~HmiEditorWidget();
  14. Q_INVOKABLE QList<QGraphicsScene*> getPages() const { return m_pages; }
  15. Q_INVOKABLE int getCurrentPageIndex() const { return m_currentPageIndex; }
  16. Q_INVOKABLE void clearPages();
  17. Q_INVOKABLE void createNewPage();
  18. Q_INVOKABLE void refreshView();
  19. void switchToPage(int index);
  20. protected:
  21. void keyPressEvent(QKeyEvent* event) override;
  22. bool eventFilter(QObject* obj, QEvent* event) override;
  23. void resizeEvent(QResizeEvent* event) override;
  24. void showEvent(QShowEvent* event) override;
  25. private slots:
  26. void onToolbarItemClicked(QListWidgetItem* item);
  27. void onNewPageClicked();
  28. void onDeletePageClicked();
  29. void onPreviousPageClicked();
  30. void onNextPageClicked();
  31. private:
  32. void initViewScale();
  33. void updatePageLabel();
  34. void ensureViewReady();
  35. QListWidget* hmiToolbar;
  36. QGraphicsView* hmiEditArea;
  37. QList<QGraphicsScene*> m_pages;
  38. int m_currentPageIndex = -1;
  39. QLabel* m_pageLabel;
  40. QPushButton* m_newPageButton;
  41. QPushButton* m_deletePageButton;
  42. QPushButton* m_prevPageButton;
  43. QPushButton* m_nextPageButton;
  44. bool m_firstShow = true;
  45. };