#ifndef DEVICESTATUSWIDGET_H #define DEVICESTATUSWIDGET_H #include #include #include #include #include #include #include "IStatusUpdate.h" // 设备状态枚举 enum class DeviceStatus { Online, // 在线 Offline, // 离线 Error // 错误 }; // 设备信息结构体 struct DeviceInfo { QString name; // 设备名称 QString alias; // 设备别名(用于区分同名设备) QString ip; // 设备IP地址 DeviceStatus status; // 设备状态 bool isNetworkDevice; // 是否为网络设备 DeviceInfo() : status(DeviceStatus::Offline), isNetworkDevice(false) {} DeviceInfo(const QString& n, const QString& a, const QString& i, DeviceStatus s, bool network) : name(n), alias(a), ip(i), status(s), isNetworkDevice(network) {} }; class DeviceStatusWidget : public QWidget { Q_OBJECT public: explicit DeviceStatusWidget(QWidget* parent = nullptr); ~DeviceStatusWidget(); // 设置设备列表 void setDevices(const QList& devices); // 更新设备状态 void updateDeviceStatus(const QString& deviceName, DeviceStatus status); // 设置设备数量 void setDeviceCount(int count); // 获取设备数量 int deviceCount() const { return m_deviceLabels.size(); } signals: // 设备点击信号 void deviceClicked(const QString& deviceName); // 设备状态改变信号 void deviceStatusChanged(const QString& deviceName, DeviceStatus status); private slots: // 处理设备标签点击事件 void onDeviceLabelClicked(); private: // 创建设备标签 void createDeviceLabels(int count); // 更新设备标签显示 void updateDeviceLabel(int index); // 获取设备状态对应的图片路径 QString getStatusImage(DeviceStatus status) const; // 设备信息列表 QList m_devices; // 设备标签列表 QList m_deviceLabels; // 设备状态标签列表 QList m_statusLabels; // 设备名称标签列表 QList m_nameLabels; // 主布局 QVBoxLayout* m_mainLayout; }; #endif // DEVICESTATUSWIDGET_H