#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include "widgets/statusbar.h" #include "widgets/launcherpage.h" #include "widgets/pageindicator.h" #include "widgets/dockbar.h" #include "widgets/procedurelistwidget.h" #include "widgets/procedureplayerwidget.h" #include "widgets/signalmeasurementwidget.h" #include "widgets/settingswidget.h" #include "widgets/datamanagementwidget.h" #include "widgets/wirelesswidget.h" #include "widgets/networktestwidget.h" #include "widgets/waveformwidget.h" #include "widgets/dualchannelwidget.h" #include "widgets/signaltrimwidget.h" #include "utils/configmanager.h" #include "procedure/proceduremanager.h" class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); protected: void resizeEvent(QResizeEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; private slots: void onAppClicked(const QString &appId); void onDockAppClicked(const QString &appId); void goToPage(int pageIndex); void animatePageTransition(int fromPage, int toPage); // 规程播放器相关 void onProcedureSelected(const QString &procedureId); void onBackToLauncher(); void onBackToLauncherFromSignal(); private: void setupUI(); void setupPages(); void setupProcedurePlayer(); void setupSignalMeasurement(); void loadConfig(); void handleSwipe(int deltaX); void openApplication(const QString &appId); void showLauncher(); void showProcedureList(); void showProcedurePlayer(const QString &procedureId); void showSignalMeasurement(const QString &appId = QString()); // UI 组件 QWidget *m_centralWidget; StatusBar *m_statusBar; QWidget *m_pageContainer; QStackedWidget *m_stackedWidget; QVector m_pages; PageIndicator *m_pageIndicator; DockBar *m_dockBar; // 规程播放器组件 QStackedWidget *m_mainStackedWidget; // 主视图切换 QWidget *m_launcherContainer; ProcedureListWidget *m_procedureListWidget; ProcedurePlayerWidget *m_procedurePlayerWidget; ProcedureManager *m_procedureManager; // 信号测量组件 SignalMeasurementWidget *m_signalMeasurementWidget; // 设置和数据管理组件 SettingsWidget *m_settingsWidget; DataManagementWidget *m_dataManagementWidget; WirelessWidget *m_wirelessWidget; NetworkTestWidget *m_networkTestWidget; WaveformWidget *m_waveformWidget; DualChannelWidget *m_dualChannelWidget; SignalTrimWidget *m_signalTrimWidget; // 配置 ConfigManager *m_configManager; // 页面状态 int m_currentPage; int m_totalPages; // 滑动手势 QPoint m_swipeStartPos; bool m_isSwiping; int m_swipeThreshold; }; #endif // MAINWINDOW_H