×
Namespaces

Variants
Actions
(Difference between revisions)

How to use QCompass sensor

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (Hamishwillee - Bot update - Fix ArticleMetaData and other general fixes)
hamishwillee (Talk | contribs)
m (Text replace - "<code cpp>" to "<code cpp-qt>")
 
(4 intermediate revisions by one user not shown)
Line 1: Line 1:
[[Category:Qt]][[Category:Qt Mobility]][[Category:Code Examples]]
+
[[Category:Qt Mobility]][[Category:Code Examples]][[Category:MeeGo Harmattan]][[Category:Symbian]][[Category:Qt C++ UI]]
{{Abstract|This code snippet shows how to use QCompass Sensor using Qt Mobility Project and display sensor data on the screen}}
+
{{Abstract|This code snippet shows how to use Qt's [http://doc.qt.nokia.com/qtmobility-1.1.0/qcompass.html QCompass] sensor and display sensor data on the screen.}}  
  
 
{{ArticleMetaData <!-- v1.2 -->
 
{{ArticleMetaData <!-- v1.2 -->
|sourcecode= [[Media: QtCompassSensorExample.zip]] [[Media:QtCompassSensorExample.zip]]  
+
|sourcecode= [[Media: QtCompassSensorExample.zip]] [[Media:QtCompassSensorExample.zip]]
 
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 
|devices= N8,C7,E7
 
|devices= N8,C7,E7
Line 24: Line 24:
 
|author= [[User:Chintandave er]]
 
|author= [[User:Chintandave er]]
 
}}
 
}}
 
== Overview ==
 
 
{{Abstract|This code snippet shows how to use [http://doc.qt.nokia.com/qtmobility-1.1.0/qcompass.html QCompass] Sensor using [http://developer.qt.nokia.com/wiki/Category:Qt_Labs_Projects Qt Mobility Project] and display sensor data on the screen.}} This Example use [http://doc.qt.nokia.com/qtmobility-1.1.0/sensors-api.html Sensor API] of  [http://doc.qt.nokia.com/qtmobility-1.1.0/index.html Qt Mobilty].
 
 
==Preconditions==
 
 
Read this for how to [[CS001615 - Setting up Qt Mobility]]
 
  
 
==Project File (.pro file)==
 
==Project File (.pro file)==
Line 37: Line 29:
 
* Add the Qt Mobility project configuration option in the '''.Pro''' file as shown below
 
* Add the Qt Mobility project configuration option in the '''.Pro''' file as shown below
  
<code cpp>
+
<code cpp-qt>
 
CONFIG += mobility
 
CONFIG += mobility
 
MOBILITY += sensors
 
MOBILITY += sensors
Line 44: Line 36:
 
*here is the full project(.pro) file.
 
*here is the full project(.pro) file.
  
<code cpp>
+
<code cpp-qt>
  
 
QT      += core gui
 
QT      += core gui
Line 78: Line 70:
 
* Add the Qt Mobility namespace to use Qt Mobiltiy in header file
 
* Add the Qt Mobility namespace to use Qt Mobiltiy in header file
  
<code cpp>
+
<code cpp-qt>
 
QTM_USE_NAMESPACE
 
QTM_USE_NAMESPACE
 
</code>
 
</code>
Line 117: Line 109:
 
     QTimer inactiveTimer;
 
     QTimer inactiveTimer;
 
};
 
};
 
 
 
</code>
 
</code>
  
Line 126: Line 116:
 
Here is the qtcompassensor.cpp source file.
 
Here is the qtcompassensor.cpp source file.
  
<code cpp>
+
<code cpp-qt>
  
 
#include "qtcompassensor.h"
 
#include "qtcompassensor.h"
Line 210: Line 200:
 
==Related Articles==
 
==Related Articles==
  
[[Turning phone into magnetic compass using Qt mobility project]]
+
* [[Turning phone into magnetic compass using Qt mobility project]]
 
+
* [[Accelerometer Sensor Example Using QtMobility Project]]
[[Accelerometer Sensor Example Using QtMobility Project]]
+
* [[QtMagnetometer Sensor Example Using QtMobility Project]]
 
+
* [http://doc.qt.nokia.com/qtmobility-1.2/ Qt Mobility 1.2]
[[QtMagnetometer Sensor Example Using QtMobility Project]]
+
 
+
[http://doc.qt.nokia.com/qtmobility-1.2/ Qt Mobility 1.2]
+
 
+
- [[User:Chintandave er|Chintandave er]] 05:33, 9 December 2010 (UTC)[[Category:MeeGo]] [[Category:Symbian]]
+

Latest revision as of 04:13, 11 October 2012

This code snippet shows how to use Qt's QCompass sensor and display sensor data on the screen.

Article Metadata
Code ExampleTested with
Devices(s): N8,C7,E7
Compatibility
Platform(s): Symbian
Symbian
Article
Keywords: QCompass,Qt Mobility ,Sensor API
Created: chintandave_er (29 Nov 2010)
Last edited: hamishwillee (11 Oct 2012)

Contents

[edit] Project File (.pro file)

  • Add the Qt Mobility project configuration option in the .Pro file as shown below
CONFIG += mobility
MOBILITY += sensors
  • here is the full project(.pro) file.
QT       += core gui
 
TARGET = QtCompasSensor
TEMPLATE = app
 
 
SOURCES += main.cpp\
qtcompassensor.cpp
 
HEADERS += qtcompassensor.h
 
CONFIG += mobility
CONFIG += debug
MOBILITY = sensors
 
symbian {
TARGET.UID3 = 0xe00fb3c0
# TARGET.CAPABILITY +=
TARGET.EPOCSTACKSIZE = 0x14000
TARGET.EPOCHEAPSIZE = 0x020000 0x800000
}


[edit] Header

  • Add the Qt Mobility namespace to use Qt Mobiltiy in header file
QTM_USE_NAMESPACE

Here is the qtcompassensor.h header file.

#include <QtGui/QMainWindow>
#include <QGraphicsView>
#include <QBasicTimer>
#include <QTimer>
#include <QCompass> // Add Sensor Class
 
// add Qt Mobility Project Namespace
QTM_USE_NAMESPACE
 
class QGraphicsRectItem;
class QGraphicsSimpleTextItem;
 
class QtCompasSensor : public QGraphicsView
{
Q_OBJECT
 
public:
QtCompasSensor(QWidget *parent = 0);
 
protected:
bool event(QEvent *event);
 
private:
void updateCompasSensor();
 
private:
QGraphicsRectItem *Rect;
QGraphicsSimpleTextItem *text;
QCompass *CompasSensor;
QBasicTimer Timer;
QTimer inactiveTimer;
};


[edit] Source

Here is the qtcompassensor.cpp source file.

#include "qtcompassensor.h"
#include <QGraphicsRectItem>
#include <QGraphicsSimpleTextItem>
#include <QResizeEvent>
 
// include timer event
#include <QTimerEvent>
#include <QDebug>
 
QtCompasSensor::QtCompasSensor(QWidget *parent)
: QGraphicsView(parent), Rect(0), text(0), CompasSensor(0)
{
QGraphicsScene *scene = new QGraphicsScene(this);
setScene(scene);
 
Rect = new QGraphicsRectItem();
 
text = new QGraphicsSimpleTextItem(Rect);
text->setBrush(Qt::gray);
scene->addItem(Rect);
 
CompasSensor = new QCompass(this);
inactiveTimer.setSingleShot(true);
 
if (!Timer.isActive())
Timer.start(20, this);
 
// start the sensor
if (!CompasSensor->isActive())
CompasSensor->start();
 
if (!CompasSensor->isActive())
{
qDebug() << "Compas Sensor didn't start!" << endl;
}
 
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}
 
bool QtCompasSensor::event(QEvent *event)
{
switch (event->type()) {
case QEvent::Timer:
if (static_cast<QTimerEvent*>(event)->timerId() == Timer.timerId())
updateCompasSensor(); // update the sensor data
break;
default:
break;
}
return QGraphicsView::event(event);
}
 
void QtCompasSensor::updateCompasSensor()
{
QCompassReading *reading = CompasSensor->reading();
qreal azi = 0.0f;
qreal calibrationLevel = 0.0f;
if (reading) {
azi = reading->azimuth();
calibrationLevel = reading->calibrationLevel();
 
// set the text and display it on the screen
QLocale c(QLocale::C);
text->setText("azimuth: " + c.toString(azi) + "\n\nCompass Sensor Calibration Level: " + c.toString(calibrationLevel));
 
}
}

[edit] Postconditions

Here is the QtCompassSensor Application's Screenshot. You can change the Compass Sensor data like azimuth and Calibration Level from Qt Simulator.

QtCompassSimulator.png QtCompassExample.png

[edit] Example Application

Example application can be found on the following link File:QtCompassSensorExample.zip.

[edit] Related Articles

This page was last modified on 11 October 2012, at 04:13.
159 page views in the last 30 days.
×