#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include #include #include #include class PlotWidget; class UdpReceiver; class DataManager; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void onStartStop(); void onOpenFile(); void onClear(); void onDataReceived(const QByteArray &data); void onDisplayPointsChanged(int count); void onToggleChannel(int channel, bool visible); private: void setupUi(); void startReceiving(); void stopReceiving(); void processDataLine(const QString &line); void loadAndDisplayFile(const QString &filePath); // 控件 QLineEdit *m_portEdit; QPushButton *m_startStopBtn; QPushButton *m_openFileBtn; QPushButton *m_clearBtn; QLabel *m_statusLabel; QLabel *m_packetLabel; QSpinBox *m_displaySpinBox; PlotWidget *m_plotWidget; // 功能组件 UdpReceiver *m_udpReceiver; DataManager *m_dataManager; // 状态 bool m_isReceiving; int m_packetCount; QString m_dataDir; // 通道选择复选框 QList m_channelChecks; }; #endif // MAINWINDOW_H