// ***************************************************************************** // 版权所有(C)2023~2099 上海骄成超声波技术有限公司 // 保留所有权利 // ***************************************************************************** // 作者 : 杨坚 // 版本 : 1.0 // 功能说明: // 鼠标监控-全局的,可能后面还有其他地方使用,所以.. // ***************************************************************************** #include "JMouseMonitorThread.h" JMouseMonitorThread::JMouseMonitorThread(QObject* parent /*= nullptr*/) : QThread(parent), m_locked(false), m_running(true) { } void JMouseMonitorThread::setLockCenter(const QPoint center) { QMutexLocker locker(&m_mutex); m_lockCenter = center; m_locked = true; } void JMouseMonitorThread::unlock() { QMutexLocker locker(&m_mutex); m_locked = false; } void JMouseMonitorThread::stop() { m_running = false; wait(); } void JMouseMonitorThread::run() { QPoint lastPos = QCursor::pos(); while (m_running) { if (m_locked) { QPoint currentPos; QPoint center; { QMutexLocker locker(&m_mutex); center = m_lockCenter; } currentPos = QCursor::pos(); QPoint delta = currentPos - center; if (delta != QPoint(0, 0)) { emit MouseMovedSlg(delta); emit RequestCursorMoveSlg(center); } } msleep(15); } }