91 lines
2.3 KiB
C++
91 lines
2.3 KiB
C++
#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
|