mainwindow.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <QStackedWidget>
  5. #include <QVector>
  6. class DatabaseModule;
  7. class SerialModule;
  8. class NetworkModule;
  9. class Toolbar;
  10. class DaemonClient;
  11. class SettingsDialog;
  12. class QLabel;
  13. class DaemonMessageFlowWidget;
  14. class MainWindow : public QMainWindow
  15. {
  16. Q_OBJECT
  17. public:
  18. MainWindow(QWidget *parent = nullptr);
  19. protected:
  20. void closeEvent(QCloseEvent *event) override;
  21. private:
  22. void createUI();
  23. // menubar-菜单栏
  24. void createMenuBar();
  25. // toolbar-工具栏
  26. void createHomeToolbar();
  27. void createSerialToolbar();
  28. void createNetworkToolbar();
  29. void createDatabaseToolbar();
  30. void createSettingsToolbar();
  31. void createHelpToolbar();
  32. // motion-切换页面
  33. void switchToPage(int index);
  34. void setupShortcuts();
  35. void connectSignals();
  36. void showAbout();
  37. // 设备选择自动跳转
  38. void onDeviceSelectedForAutoSwitch(const QString &deviceType, const QString &deviceId);
  39. // daemon-守护进程
  40. void setupDaemonStatus();
  41. void updateDaemonStatus(bool running, const QString& statusJson);
  42. void updateLoadInfo(const QString& loadInfoJson);
  43. void createMessageFlowDock();
  44. // settings-设置
  45. void loadSettings();
  46. void showSettingsDialog();
  47. private slots:
  48. void onDaemonStatusChanged(bool running, const QString& statusJson);
  49. void onLoadInfoUpdated(const QString& loadInfoJson);
  50. private:
  51. QStackedWidget *m_pageStack;
  52. QVector<Toolbar*> m_toolbars;
  53. // 子界面
  54. SerialModule *m_serialModule = nullptr;
  55. NetworkModule *m_networkModule = nullptr;
  56. DatabaseModule *m_databaseModule = nullptr;
  57. int m_serialPageIndex = -1;
  58. int m_networkPageIndex = -1;
  59. int m_databasePageIndex = -1;
  60. // 守护进程客户端和状态显示
  61. DaemonClient *m_daemonClient = nullptr;
  62. QLabel *m_statusLabel = nullptr;
  63. QLabel *m_loadLabel = nullptr;
  64. DaemonMessageFlowWidget *m_messageFlowWidget = nullptr;
  65. // 设置对话框
  66. SettingsDialog *m_settingsDialog = nullptr;
  67. };
  68. #endif // MAINWINDOW_H