diff --git a/frame/util/touchsignalmanager.cpp b/frame/util/touchsignalmanager.cpp index c1ec11f0b..213e71b66 100644 --- a/frame/util/touchsignalmanager.cpp +++ b/frame/util/touchsignalmanager.cpp @@ -19,6 +19,7 @@ TouchSignalManager::TouchSignalManager(QObject *parent) connect(m_gestureInter, &Gesture::TouchUpOrCancel, this, &TouchSignalManager::dealTouchRelease); connect(m_gestureInter, &Gesture::TouchPressTimeout, this, &TouchSignalManager::dealTouchPress); + connect(m_gestureInter, &Gesture::TouchMoving, this, &TouchSignalManager::touchMove); } TouchSignalManager::~TouchSignalManager() diff --git a/frame/util/touchsignalmanager.h b/frame/util/touchsignalmanager.h index cbe98f2e6..81b04ecc8 100644 --- a/frame/util/touchsignalmanager.h +++ b/frame/util/touchsignalmanager.h @@ -43,6 +43,7 @@ signals: void touchRelease(double scaleX, double scaleY); // 转发后端拖拽任务栏高度单指触控按压信号,当前设计1000ms void middleTouchPress(double scaleX, double scaleY); + void touchMove(double scaleX, double scaleY); private slots: void dealShortTouchPress(int time, double scaleX, double scaleY); diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index d2c4ca229..31c616041 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -277,6 +277,16 @@ void MainWindow::initConnections() // 响应后端触控屏拖拽任务栏高度长按信号 connect(TouchSignalManager::instance(), &TouchSignalManager::middleTouchPress, this, &MainWindow::touchRequestResizeDock); + connect(TouchSignalManager::instance(), &TouchSignalManager::touchMove, m_dragWidget, [ this ](){ + static QPoint lastPos; + QPoint curPos = QCursor::pos(); + if (lastPos == curPos) { + return; + } + lastPos = curPos; + qApp->postEvent(m_dragWidget, new QMouseEvent(QEvent::MouseMove, m_dragWidget->mapFromGlobal(curPos) + , curPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier)); + }); } void MainWindow::getTrayVisableItemCount() @@ -468,7 +478,8 @@ void MainWindow::touchRequestResizeDock() if (!touchRect.contains(touchPos)) { return; } - qApp->postEvent(m_dragWidget, new QMouseEvent(QEvent::MouseButtonPress, QPoint(), touchPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier)); + qApp->postEvent(m_dragWidget, new QMouseEvent(QEvent::MouseButtonPress, m_dragWidget->mapFromGlobal(touchPos) + , touchPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier)); } #include "mainwindow.moc"