Qt雷达屏幕模拟鼠标按键
软件可以通过雷达进行探知触摸区域,通过校准后转换成鼠标的点击事件,
,首先是打开连接设备,然后进行数据接收,
通过校准画出需要点击的区域镜像到屏幕,点击右键确认校准区域,
通过按键F1启动模拟,F2停止模拟,ESC退出。
#ifndef QSCANLIDARWIDGET_H
#define QSCANLIDARWIDGET_H
#include <QWidget>
#include <QList>
#include <QPoint>
#include "qscanlidar_global.h"
struct QScanDot {
char quality;//质量.
float angle;//角度.
float dist;//距离.
};
class QSCANLIDARSHARED_EXPORT QScanLidarWidget: public QWidget
{
Q_OBJECT
public:
explicit QScanLidarWidget(QWidget *parent = 0);
~QScanLidarWidget();
void setCalibrationLineState(bool);//是否显示表标定线
void setCorrectState(bool);//是否进入校准
void setScanData(QVector<QScanDot>, size_t count, float sampleDuration);//这里进行雷达数据解析
void setScreenSize(int w,int h);//设置屏幕大小
protected:
virtual void paintEvent(QPaintEvent *event);
virtual void wheelEvent(QWheelEvent *event);
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
virtual void mouseMoveEvent(QMouseEvent *event);
virtual void resizeEvent(QResizeEvent *event);
void drawROI(QPainter *painter);
signals:
void sendCheck(QPoint);//发送按下的点数据
void sendCorrectOver();//校准完成
public slots:
private:
QList<QPoint> t_dis_points;
int m_modelIndex;
float m_sample_duration;//持续时间
float m_scan_speed;//扫描速度
double m_max_dist;//最大距离
bool m_mouseState;//鼠标状态
bool m_roiState;//绘制区域线状态
QPoint m_startPoint;//开始点
QPoint m_stopPoint;//结束点
bool m_calibrationLineState;//标定线状态
bool m_correctState;//矫正状态
QVector<QPoint> m_pressPoint;//检测到按下屏幕的点
int m_screen_w;//屏幕宽
int m_screen_h;//屏幕高
};
#endif // QSCANLIDARWIDGET_H