#ifndef DEVICESTATUSWIDGET_H #define DEVICESTATUSWIDGET_H #include #include #include #include #include #include #include #include #include "IWheelMeasureStatus.h" // 每行显示的设备数量 const int DEVICES_PER_ROW = 4; // 设备显示信息结构体(用于UI显示) struct WheelDeviceDisplayInfo { QString name; QString alias; QString ip; DeviceStatus status; bool isNetworkDevice; float temperature; bool hasTemperature; WheelDeviceDisplayInfo() : status(DeviceStatus::Offline), isNetworkDevice(false), temperature(0.0f), hasTemperature(false) {} WheelDeviceDisplayInfo(const QString& n, const QString& a, const QString& i, DeviceStatus s, bool network) : name(n), alias(a), ip(i), status(s), isNetworkDevice(network), temperature(0.0f), hasTemperature(false) {} }; 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 updateDeviceTemperature(const QString& deviceName, float temperature); int deviceCount() const { return m_deviceLabels.size(); } signals: void deviceClicked(const QString& deviceName); void deviceStatusChanged(const QString& deviceName, DeviceStatus status); protected: bool eventFilter(QObject* obj, QEvent* event) override; private slots: void onDeviceLabelClicked(); private: void createDeviceLabels(int count); void removeDeviceLabels(); void updateDeviceLabel(int index); QString getStatusImage(DeviceStatus status) const; QList m_devices; QList m_deviceLabels; QList m_statusLabels; QList m_nameLabels; QList m_temperatureLabels; QGridLayout* m_gridLayout; }; #endif // DEVICESTATUSWIDGET_H