マウスの移動速度を計算する方法は?

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)で表されます。必要に応じて変換や調整を行うことができます。

bannerAds