mainwindow.h 1.8 KB

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