#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include class DatabaseModule; class SerialModule; class Toolbar; class DaemonClient; class SettingsDialog; class QLabel; class DaemonMessageFlowWidget; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); protected: void closeEvent(QCloseEvent *event) override; private: void createUI(); // menubar-菜单栏 void createMenuBar(); // toolbar-工具栏 void createHomeToolbar(); void createSerialToolbar(); void createDatabaseToolbar(); void createSettingsToolbar(); void createHelpToolbar(); // motion-切换页面 void switchToPage(int index); void setupShortcuts(); void connectSignals(); void showAbout(); // daemon-守护进程 void setupDaemonStatus(); void updateDaemonStatus(bool running, const QString& statusJson); void updateLoadInfo(const QString& loadInfoJson); void createMessageFlowDock(); // settings-设置 void loadSettings(); void showSettingsDialog(); private slots: void onDaemonStatusChanged(bool running, const QString& statusJson); void onLoadInfoUpdated(const QString& loadInfoJson); private: QStackedWidget *m_pageStack; QVector m_toolbars; // 子界面 SerialModule *m_serialModule = nullptr; DatabaseModule *m_databaseModule = nullptr; int m_serialPageIndex = -1; int m_databasePageIndex = -1; // 守护进程客户端和状态显示 DaemonClient *m_daemonClient = nullptr; QLabel *m_statusLabel = nullptr; QLabel *m_loadLabel = nullptr; DaemonMessageFlowWidget *m_messageFlowWidget = nullptr; // 设置对话框 SettingsDialog *m_settingsDialog = nullptr; }; #endif // MAINWINDOW_H