GrabBag/AppUtils/UIUtils/Inc/DeviceStatusWidget.h

91 lines
2.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef DEVICESTATUSWIDGET_H
#define DEVICESTATUSWIDGET_H
#include <QWidget>
#include <QLabel>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QEvent>
#include <QMouseEvent>
#include <QObject>
#include <QString>
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