#ifndef DEVICESTATUSWIDGET_H #define DEVICESTATUSWIDGET_H #include #include #include #include #include #include #include #include namespace Ui { class DeviceStatusWidget; } /** * @brief 设备状态显示组件 * * 用于显示相机、机器人/串口等设备的连接状态 * 支持多相机(1-2个)的状态显示和切换 */ class DeviceStatusWidget : public QWidget { Q_OBJECT public: explicit DeviceStatusWidget(QWidget *parent = nullptr); ~DeviceStatusWidget(); // 设备状态更新方法 void updateCamera1Status(bool isConnected); void updateCamera2Status(bool isConnected); void updateRobotStatus(bool isConnected); void updateSerialStatus(bool isConnected); // 设置相机名称方法 void setCamera1Name(const QString& name); void setCamera2Name(const QString& name); // 设置相机数量(用于控制相机二的显示和布局方向) void setCameraCount(int cameraCount); // 事件过滤器 bool eventFilter(QObject *obj, QEvent *event) override; signals: // 相机点击信号 void cameraClicked(int cameraIndex); private slots: // 相机点击槽函数 void onCamera1Clicked(); void onCamera2Clicked(); private: Ui::DeviceStatusWidget *ui; // 当前选中的相机索引 int m_selectedCameraIndex; // 相机名称 QString m_camera1Name; QString m_camera2Name; // 设置状态图片的私有成员函数 void setCameraStatusImage(QWidget* widget, bool isOnline); void setRobotStatusImage(QWidget* widget, bool isOnline); // 设置样式的私有成员函数 void setItemStyle(); // 设置相机选中状态的样式 void setCameraSelectedStyle(int cameraIndex); // 布局管理的私有成员函数 void setVerticalLayout(); void setHorizontalLayoutForSingleCamera(); void adjustFramesForVerticalLayout(); void adjustFramesForSingleCameraHorizontalLayout(); // 初始化点击事件 void initClickEvents(); // 更新相机显示文本的私有方法 void updateCamera1DisplayText(bool isConnected); void updateCamera2DisplayText(bool isConnected); }; #endif // DEVICESTATUSWIDGET_H