Files
CalibratorLauncher/widgets/wirelesswidget.h
2026-01-02 19:20:35 +09:00

102 lines
2.2 KiB
C++

#ifndef WIRELESSWIDGET_H
#define WIRELESSWIDGET_H
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QComboBox>
#include <QListWidget>
#include <QProgressBar>
#include <QGroupBox>
#include <QStackedWidget>
#include <QTimer>
/**
* @brief 无线通讯设置页面
* 提供4G和WIFI通讯配置功能
*/
class WirelessWidget : public QWidget
{
Q_OBJECT
public:
explicit WirelessWidget(QWidget *parent = nullptr);
signals:
void backRequested();
private slots:
void onWifiScan();
void onWifiConnect();
void onWifiDisconnect();
void onWifiItemClicked(QListWidgetItem *item);
void on4GConnect();
void on4GDisconnect();
void onRefreshStatus();
void onTabChanged(int index);
private:
void setupUI();
QWidget *createTitleBar();
QWidget *createTabBar();
QWidget *createWifiPanel();
QWidget *create4GPanel();
QWidget *createStatusPanel();
void updateWifiList();
void updateConnectionStatus();
// 标题栏
QLabel *m_titleLabel;
QPushButton *m_backBtn;
// Tab栏
QList<QPushButton *> m_tabButtons;
QStackedWidget *m_contentStack;
int m_currentTab;
// WiFi面板
QListWidget *m_wifiList;
QPushButton *m_wifiScanBtn;
QPushButton *m_wifiConnectBtn;
QPushButton *m_wifiDisconnectBtn;
QLineEdit *m_wifiPasswordEdit;
QLabel *m_wifiStatusLabel;
QProgressBar *m_wifiSignalBar;
// 4G面板
QComboBox *m_apnCombo;
QLineEdit *m_apnEdit;
QLineEdit *m_4gUsernameEdit;
QLineEdit *m_4gPasswordEdit;
QPushButton *m_4gConnectBtn;
QPushButton *m_4gDisconnectBtn;
QLabel *m_4gStatusLabel;
QProgressBar *m_4gSignalBar;
QLabel *m_simStatusLabel;
// 状态面板
QLabel *m_connectionTypeLabel;
QLabel *m_ipAddressLabel;
QLabel *m_macAddressLabel;
QLabel *m_signalStrengthLabel;
QLabel *m_uploadSpeedLabel;
QLabel *m_downloadSpeedLabel;
// 刷新定时器
QTimer *m_statusTimer;
// 样式常量
static const QString BUTTON_STYLE;
static const QString PRIMARY_BUTTON_STYLE;
static const QString DANGER_BUTTON_STYLE;
static const QString INPUT_STYLE;
static const QString GROUP_STYLE;
static const QString TAB_STYLE;
static const QString TAB_ACTIVE_STYLE;
};
#endif // WIRELESSWIDGET_H