在Qt中,可以通過捕捉鼠標移動事件來計算鼠標移動速度。首先,你需要在你的窗口或者QWidget子類中重寫鼠標移動事件的處理方法:
void YourWidget::mouseMoveEvent(QMouseEvent *event)
{
static QPoint lastPos;
static qint64 lastTime = 0;
qint64 currentTime = QDateTime::currentMSecsSinceEpoch();
QPoint currentPos = event->pos();
if (lastTime == 0) {
lastTime = currentTime;
lastPos = currentPos;
return;
}
int deltaTime = currentTime - lastTime;
int distance = (currentPos - lastPos).manhattanLength();
int speed = distance / deltaTime; // 計算速度
qDebug() << "Mouse Speed: " << speed;
// 更新上一次的位置和時間
lastPos = currentPos;
lastTime = currentTime;
}
在這個示例中,我們使用靜態變量來記錄上一次的位置和時間。在每次鼠標移動事件中,我們計算當前時間與上一次時間的差值,并計算當前位置與上一次位置的距離。然后,通過除以時間差值來計算鼠標移動速度。
這個速度是以每毫秒像素(px/ms)為單位的值。你可以根據你的需求進行轉換或者調整。