#pragma once #include #include #include #include #include #include #include class HmiEditorWidget : public QWidget { Q_OBJECT public: explicit HmiEditorWidget(QWidget* parent = nullptr); ~HmiEditorWidget(); Q_INVOKABLE QList getPages() const { return m_pages; } Q_INVOKABLE int getCurrentPageIndex() const { return m_currentPageIndex; } Q_INVOKABLE void clearPages(); Q_INVOKABLE void createNewPage(); Q_INVOKABLE void refreshView(); void switchToPage(int index); protected: void keyPressEvent(QKeyEvent* event) override; bool eventFilter(QObject* obj, QEvent* event) override; void resizeEvent(QResizeEvent* event) override; void showEvent(QShowEvent* event) override; private slots: void onToolbarItemClicked(QListWidgetItem* item); void onNewPageClicked(); void onDeletePageClicked(); void onPreviousPageClicked(); void onNextPageClicked(); private: void initViewScale(); void updatePageLabel(); void ensureViewReady(); QListWidget* hmiToolbar; QGraphicsView* hmiEditArea; QList m_pages; int m_currentPageIndex = -1; QLabel* m_pageLabel; QPushButton* m_newPageButton; QPushButton* m_deletePageButton; QPushButton* m_prevPageButton; QPushButton* m_nextPageButton; bool m_firstShow = true; };