#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include "basedocument.h" #include QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); protected: bool eventFilter(QObject *obj, QEvent *event) override; private slots: void onNewHMI(); // 新建HMI文档 void onNewPLC(); // 新建PLC文档 void onTabChanged(int idx); // 标签页切换时更新工具栏 void onSave(); // 保存文档 void onSaveAs(); // 另存为文档 void onOpen(); // 打开文档 void onCloseTab(int index); // 关闭标签页 void onClearLogButtonClicked(); void showLogContextMenu(const QPoint &pos); private: void createMenus(); // 创建菜单栏 QWidget* m_logPanelContainer; QDockWidget* m_logDock; QTextEdit* m_logEdit; QPushButton* m_clearLogBtn; void createLogPanel(); void createToolbars(); // 创建工具栏(左侧) void updateToolBar(BaseDocument *doc); // 根据文档类型更新工具栏 void saveDocument(BaseDocument *doc); // 保存文档 void saveDocumentAs(BaseDocument *doc); // 另存为文档 QTabWidget *m_tabWidget; // 多文档标签页 QToolBar *m_leftToolBar; // 左侧工具栏 int m_hmiCount = 0; // HMI文档计数器 int m_plcCount = 0; // PLC文档计数器 // 菜单动作 QAction *m_saveAction; QAction *m_saveAsAction; QAction *m_openAction; }; #endif // MAINWINDOW_H