我尝试使用Qt Creator 5.1.1为Android开发程序,可以输出物理设备的三个传感器(QAccelerometer,Qtilt,Qmagnetometer)(HTC One x) 一切都还可以,但是有一个问题,当我想在textlabel中显示输出时,输出会很快消失并且它会变为零。 这是我的MainWindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTimer *timer;
timer = new QTimer();
connect(timer,SIGNAL(timeout()),this,SLOT(update()));
timer->start(10);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::update(){
//----------------------TiltSensor--------------///////
QSensor sensor("QTiltSensor");
sensor.start();
QSensorReading *reading = sensor.reading();
qreal xrotation = reading->property("xRotation").value<qreal>();
qreal yrotation = reading->property("yRotation").value<qreal>();
//---------------QMagnetometer-------------------/////////
QSensor sensor2("QMagnetometer");
sensor2.start();
QSensorReading *reading2 = sensor2.reading();
qreal xmagnet = reading2->property("x").value<qreal>();
qreal ymagnet = reading2->property("y").value<qreal>();
qreal zmagnet = reading2->property("z").value<qreal>();
//----------------------QAccelerometer--------------------------/////
QSensor sensor3("QAccelerometer");
sensor3.start();
QSensorReading *reading3 = sensor3.reading();
qreal xAccel = reading3->property("x").value<qreal>();
qreal yAccel = reading3->property("y").value<qreal>();
qreal zAccel = reading3->property("z").value<qreal>();
//-----------------------------------------------------------------///
{
ui->label->setText(QString::number(xrotation));
ui->label_2->setText(QString::number(yrotation));
}
{
ui->label_10->setText(QString::number(xmagnet));
ui->label_8->setText(QString::number(ymagnet));
ui->label_11->setText(QString::number(zmagnet));
}
{
ui->label_17->setText(QString::number(xAccel));
ui->label_16->setText(QString::number(yAccel));
ui->label_15->setText(QString::number(zAccel));
}
}
我搜索了很多并在Qt-Help中阅读了所有文档但没有得到任何结果,我甚至尝试使用readychange()信号,但它似乎并没有用。
答案 0 :(得分:0)
运行传感器启动后,您需要等待。您应该在构造函数中启动传感器并将信号readingChanged
连接到您的插槽。希望这有帮助
答案 1 :(得分:0)
旧帖但也许人们仍有同样的问题。
例如,将您的函数名称从update()
更改为updateVals()
。
update()
是保留的,它会在不提醒您的情况下为您提供问题。