#ifndef MAINWINDOW_H #define MAINWINDOW_H // 添加GLIBC兼容性支持 #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif // 限制GLIBC版本兼容性到2.31 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__) # if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 31) # define GLIBC_MAX_VERSION "2.31" # endif #endif #include #include class QLabel; class QPushButton; class QLineEdit; class QTcpSocket; class QTimer; class QSpinBox; class QCheckBox; class QComboBox; class QListWidget; class QListWidgetItem; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void connectToServer(); void onConnected(); void onDisconnected(); void onReadyRead(); void pollData(); void onReconnectTimeout(); void onReconnectIntervalChanged(int value); void onDeviceSelectionChanged(); void refreshDevicesList(); void sendControlCommand(); private: void updateDisplayFromJson(const QJsonObject &obj); private: QLineEdit *m_ipEdit; QLineEdit *m_portEdit; QPushButton *m_connectBtn; // 设备列表和选择 QComboBox *m_deviceCombo; QPushButton *m_refreshBtn; QLabel *m_currentDeviceLabel; QLabel *m_tempLabel; QLabel *m_humLabel; QLabel *m_buzzerLabel; QLabel *m_ledLabels[3]; QTcpSocket *m_socket; QTimer *m_pollTimer; QTimer *m_reconnectTimer; QSpinBox *m_pollSpin; QSpinBox *m_reconnectSpin; // 控制面板 QCheckBox *m_buzzerChk; QCheckBox *m_ledChk[3]; QPushButton *m_sendControlBtn; // 设备数据管理 QString m_currentDeviceId; QMap m_deviceData; // device_id -> latest data }; #endif // MAINWINDOW_H