|
- #pragma once
-
- // Qt 核心模块
- #include <QWidget>
- #include <QListWidget>
- #include <QGraphicsView>
- #include <QGraphicsScene>
- #include <QLabel>
- #include <QPushButton>
- #include <QTextEdit>
- #include <QList>
-
- /**
- * @class EditorWidget
- * @brief 图形编辑器基础抽象类
- *
- * 提供编辑器基础框架,包含工具栏、绘图区和输出控制台。
- * 作为抽象基类,需要派生类实现特定的编辑功能。
- */
- class EditorWidget : public QWidget {
- Q_OBJECT // 启用Qt元对象系统(信号槽、属性等)
-
- public:
- explicit EditorWidget(QWidget* parent = nullptr);
-
- /**
- * @brief 虚析构函数
- */
- virtual ~EditorWidget();
-
- // ========== 纯虚接口 ==========
- /**
- * @brief 获取当前场景
- * @return 当前活动的QGraphicsScene指针
- */
- virtual QGraphicsScene* getCurrentScene() const = 0;
-
- /**
- * @brief 获取所有页面场景
- * @return 场景列表(HMI多页面返回多个,PLC单页面返回单个场景的列表)
- */
- virtual QList<QGraphicsScene*> getPages() const = 0;
-
- /**
- * @brief 获取当前页面索引
- * @return 当前页索引(HMI使用,PLC等单页面编辑器可固定返回0)
- */
- virtual int getCurrentPageIndex() const = 0;
-
- /**
- * @brief 清空所有页面/场景内容
- */
- virtual void clearPages() = 0;
-
- protected:
- // ========== 需要派生类实现的接口 ==========
- /**
- * @brief 初始化工具栏内容
- */
- virtual void initToolbar() = 0;
-
- /**
- * @brief 工具栏项点击处理
- * @param item 被点击的QListWidgetItem对象
- */
- virtual void onToolbarItemClicked(QListWidgetItem* item) = 0;
-
- // ========== 公共工具方法 ==========
- /**
- * @brief 向输出控制台追加消息
- * @param message 要显示的消息内容
- */
- void appendOutput(const QString& message);
-
- /**
- * @brief 确保视图准备就绪
- * 首次显示时执行必要的初始化操作
- */
- void ensureViewReady();
-
- // ========== 事件重写 ==========
- /**
- * @brief 键盘按下事件处理
- * @param event 键盘事件对象
- */
- virtual void keyPressEvent(QKeyEvent* event) override;
-
- /**
- * @brief 事件过滤器
- * @param obj 事件目标对象
- * @param event 事件对象
- * @return 是否已处理该事件
- */
- virtual bool eventFilter(QObject* obj, QEvent* event) override;
-
- /**
- * @brief 窗口大小调整事件
- * @param event 大小调整事件对象
- */
- virtual void resizeEvent(QResizeEvent* event) override;
-
- /**
- * @brief 窗口显示事件
- * @param event 显示事件对象
- */
- virtual void showEvent(QShowEvent* event) override;
-
- protected:
- // ========== 成员变量 ==========
- QListWidget* toolbar; ///< 左侧工具栏(图标模式)
- QGraphicsView* editArea; ///< 中央绘图视图区域
- QTextEdit* outputTextEdit; ///< 底部输出信息控制台
- bool firstShow = true; ///< 首次显示标志(用于延迟初始化)
- };
|