使用 Qt c++ 在 Windows Surface Pro 上获取加速度计数据

Getting Accelerometer data on windows Surface pro using Qt c++?

本文关键字:获取 加速度计 数据 Pro Surface Qt c++ Windows 使用      更新时间:2023-10-16

如何使用Qt c++在Windows Surface pro上获取加速度计数据?我尝试了下面的代码,但它在所有情况下都只给出了 0,0,0 个值。请帮帮我!

   QAccelerometer *accmeter = new QAccelerometer();
    accmeter->start();
    QAccelerometerReading *reading = new QAccelerometerReading();
    qreal x = reading->x();
    qreal y = reading->y();
    qreal z = reading->z();
    QMessageBox *box = new QMessageBox();
    box->setText("x="+ QString::number(x)+ "n" "y="+ QString::number(y)+ "n" "z="+ QString::number(z)+ "n");
    box->exec();

为了获得加速度计数据,Qt公司建议readingChanged收听信号,因为启动传感器后没有立即可用的数据。您的代码将缩短为如下所示的内容,accMeter更改为类的成员:

    accmeter = new QAccelerometer();
    connect(accmeter, SIGNAL(readingChanged()), this, SLOT(checkReading()));
    accmeter->start();

然后将一个名为 checkReading 的成员函数添加到您的类中:

MyClass::checkReading() {
    qreal x = accmeter->reading()->x();
    qreal y = accmeter->reading()->y();
    qreal z = accmeter->reading()->z();
    QMessageBox *box = new QMessageBox();
    box->setText("x="+ QString::number(x)+ "n" "y="+ QString::number(y)+ "n" "z="+ QString::number(z)+ "n");
    box->exec();
}

请注意,为了完美复制上面的代码,您应该将disconnect(accmeter, SIGNAL(readingChanged()), this, SLOT(checkReading()));作为最后一行附加到成员函数中。