How to Create and Run Qt Application for Android: Difference between revisions
No edit summary |
(Split section so that older information isn't mixed with new) |
||
(10 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
[[Category: | {{LangSwitch}} | ||
[[Category:Qt for Android]] | |||
[[Category:HowTo]] | |||
[[Category:Tutorial]] | |||
== This page is outdated == | |||
This information is not relevant for Qt 5, and should probably be removed. | |||
== Introduction == | |||
Using [https://wiki.qt.io/Necessitas Necessitas] Qt SDK developers can deploy Qt application on Android devices. The following tutorial will show the basics steps to create a simple Qt application for Android. | |||
= | |||
Using | |||
== Requirements == | == Requirements == | ||
Line 17: | Line 18: | ||
# Start Qt Creator from Necessitas Qt SDK | # Start Qt Creator from Necessitas Qt SDK | ||
# Press '''File | # Press '''File > New file or project…''' and follow the instructions of the wizard | ||
# Select '''Qt Widget Project''' and '''Qt Gui Application''' | # Select '''Qt Widget Project''' and '''Qt Gui Application''' | ||
# Enter project name and path to its directory | # Enter project name and path to its directory | ||
Line 26: | Line 27: | ||
=== Hints === | === Hints === | ||
* To modify general information about the application, Android Manifest file, Android Permissions or the list of libraries from Qt Creator go to '''Projects | * To modify general information about the application, Android Manifest file, Android Permissions or the list of libraries from Qt Creator go to '''Projects > Run Settings > Package configuration > Details'''. | ||
* To select Android target SDK that you want to use from Qt Creator go to '''Projects | * To select Android target SDK that you want to use from Qt Creator go to '''Projects > Run Settings > Package configuration > Details > Manifest'''. | ||
* To modify deploy configuration of the project from Qt Creator go to '''Projects | * To modify deploy configuration of the project from Qt Creator go to '''Projects > Run Settings > Configuration configuration > Details'''. | ||
== Source Code == | == Source Code == | ||
Line 38: | Line 39: | ||
* test.pro | * test.pro | ||
<code>QT | <code>QT += core gui | ||
TARGET = test | |||
TEMPLATE = app | |||
SOURCES += main.cpp mainwindow.cpp | |||
CONFIG | HEADERS += mainwindow.h | ||
FORMS+= mainwindow.ui | |||
CONFIG += mobility | |||
MOBILITY = | |||
OTHER_FILES += \ | |||
android/AndroidManifest.xml | |||
android/res/drawable-hdpi/icon.png | |||
android/res/drawable-ldpi/icon.png | |||
android/res/drawable-mdpi/icon.png | |||
android/res/values/libs.xml | |||
android/res/values/strings.xml | |||
android/src/eu/licentia/necessitas/industrius/QtActivity.java | |||
android/src/eu/licentia/necessitas/industrius/QtApplication.java | |||
android/src/eu/licentia/necessitas/industrius/QtLayout.java | |||
android/src/eu/licentia/necessitas/industrius/QtSurface.java | |||
android/src/eu/licentia/necessitas/ministro/IMinistro.aidl | |||
android/src/eu/licentia/necessitas/ministro/IMinistroCallback.aidl | |||
android/src/eu/licentia/necessitas/mobile/QtAndroidContacts.java | |||
android/src/eu/licentia/necessitas/mobile/QtCamera.java | |||
android/src/eu/licentia/necessitas/mobile/QtFeedback.java | |||
android/src/eu/licentia/necessitas/mobile/QtLocation.java | |||
android/src/eu/licentia/necessitas/mobile/QtMediaPlayer.java | |||
android/src/eu/licentia/necessitas/mobile/QtSensors.java | |||
android/src/eu/licentia/necessitas/mobile/QtSystemInfo.java</code> | |||
* main.cpp | * main.cpp | ||
<code>#include | <code>#include <QApplication> | ||
#include "mainwindow.h" | |||
int main(int argc, char '''argv[]) | |||
{ | |||
QApplication a(argc, argv); | |||
MainWindow w; | |||
#if defined(Q_WS_S60) | |||
w.showMaximized(); | |||
#else | |||
w.show(); | |||
#endif | |||
return a.exec(); | |||
}</code> | |||
''' mainwindow.h''' | |||
<code>#ifndef MAINWINDOW_H | |||
#define MAINWINDOW_H | |||
#include <QMainWindow> | |||
#include <QLabel> | |||
< | |||
namespace Ui { | |||
class MainWindow; | |||
} | |||
class MainWindow : public QMainWindow | |||
{ | |||
Q_OBJECT | |||
public: | |||
explicit MainWindow(QWidget '''parent = 0); | |||
~MainWindow(); | |||
private: | |||
// from QMainWindow | |||
void resizeEvent(QResizeEvent''' event); | |||
private: | private: | ||
QLabel* m_pLabel; | QLabel* m_pLabel; | ||
}; | |||
#endif // MAINWINDOW_H</code> | #endif // MAINWINDOW_H</code> | ||
Line 77: | Line 127: | ||
* mainwindow.cpp | * mainwindow.cpp | ||
<code>#include | <code>#include "mainwindow.h" | ||
#include <QApplication> | |||
#include <QDesktopWidget> | |||
#include <QCoreApplication> | |||
MainWindow::MainWindow(QWidget '''parent) : | |||
QMainWindow(parent), | |||
m_pLabel(NULL) | |||
{ | |||
m_pLabel = new QLabel("Hello Qt for Android!", this); | |||
m_pLabel->setGeometry(QApplication::desktop()->screenGeometry()); | |||
m_pLabel->setAlignment(Qt::AlignCenter); | |||
m_pLabel->setStyleSheet("background-color:#006600; color:#FFFFFF"); | |||
} | |||
MainWindow::~MainWindow() | |||
{ | |||
} | |||
void MainWindow::resizeEvent(QResizeEvent''' /*event*/) | |||
{ | |||
m_pLabel->setGeometry(QApplication::desktop()->screenGeometry()); | |||
}</code> | |||
== Testing == | == Testing == | ||
Line 90: | Line 157: | ||
Connect your device to the computer and run the application from Necessitas Qt SDK Qt Creator. The Qt application will automatically start on the Android device. You might be prompted to download dependencies using Ministro. Follow the instruction to install all required components. | Connect your device to the computer and run the application from Necessitas Qt SDK Qt Creator. The Qt application will automatically start on the Android device. You might be prompted to download dependencies using Ministro. Follow the instruction to install all required components. | ||
This example application has been successfully tested on | This example application has been successfully tested on [http://www.gsmarena.com/lg_gt540_optimus-3081.php LG GT540 Optimus] with Android 2.1. | ||
== See Also == | == See Also == | ||
[http://developer.qt.nokia.com/wiki/How_to_use_Necessitas_Emulator_on_Windows_7 How to use Necessitas 0.2.1 Emulator on Windows 7] <br> | |||
[http://sourceforge.net/p/necessitas/wiki/How How to write Qt apps for Android] to write Qt apps for Android/ <br> | |||
[http://sourceforge.net/p/necessitas/wiki/Setup Setup QtCreator] QtCreator/ |
Latest revision as of 07:59, 22 May 2018
This page is outdated
This information is not relevant for Qt 5, and should probably be removed.
Introduction
Using Necessitas Qt SDK developers can deploy Qt application on Android devices. The following tutorial will show the basics steps to create a simple Qt application for Android.
Requirements
- Installed Necessitas SDK
- Android device
Tutorial
- Start Qt Creator from Necessitas Qt SDK
- Press File > New file or project… and follow the instructions of the wizard
- Select Qt Widget Project and Qt Gui Application
- Enter project name and path to its directory
- Select Android as a Target
- When the project is created open the Projects view and verify the configurations for Build and Run settings
- Modify the source code and when ready run the application on the device
Hints
- To modify general information about the application, Android Manifest file, Android Permissions or the list of libraries from Qt Creator go to Projects > Run Settings > Package configuration > Details.
- To select Android target SDK that you want to use from Qt Creator go to Projects > Run Settings > Package configuration > Details > Manifest.
- To modify deploy configuration of the project from Qt Creator go to Projects > Run Settings > Configuration configuration > Details.
Source Code
As you can see the source code does not include any specific Android features which makes absolutely portable. Some additional files required by necessitas are added at pro file of the project.
- test.pro
QT += core gui
TARGET = test
TEMPLATE = app
SOURCES += main.cpp mainwindow.cpp
HEADERS += mainwindow.h
FORMS+= mainwindow.ui
CONFIG += mobility
MOBILITY =
OTHER_FILES += \
android/AndroidManifest.xml
android/res/drawable-hdpi/icon.png
android/res/drawable-ldpi/icon.png
android/res/drawable-mdpi/icon.png
android/res/values/libs.xml
android/res/values/strings.xml
android/src/eu/licentia/necessitas/industrius/QtActivity.java
android/src/eu/licentia/necessitas/industrius/QtApplication.java
android/src/eu/licentia/necessitas/industrius/QtLayout.java
android/src/eu/licentia/necessitas/industrius/QtSurface.java
android/src/eu/licentia/necessitas/ministro/IMinistro.aidl
android/src/eu/licentia/necessitas/ministro/IMinistroCallback.aidl
android/src/eu/licentia/necessitas/mobile/QtAndroidContacts.java
android/src/eu/licentia/necessitas/mobile/QtCamera.java
android/src/eu/licentia/necessitas/mobile/QtFeedback.java
android/src/eu/licentia/necessitas/mobile/QtLocation.java
android/src/eu/licentia/necessitas/mobile/QtMediaPlayer.java
android/src/eu/licentia/necessitas/mobile/QtSensors.java
android/src/eu/licentia/necessitas/mobile/QtSystemInfo.java
- main.cpp
#include <QApplication>
#include "mainwindow.h"
int main(int argc, char '''argv[])
{
QApplication a(argc, argv);
MainWindow w;
#if defined(Q_WS_S60)
w.showMaximized();
#else
w.show();
#endif
return a.exec();
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget '''parent = 0);
~MainWindow();
private:
// from QMainWindow
void resizeEvent(QResizeEvent''' event);
private:
QLabel* m_pLabel;
};
#endif // MAINWINDOW_H
- mainwindow.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QDesktopWidget>
#include <QCoreApplication>
MainWindow::MainWindow(QWidget '''parent) :
QMainWindow(parent),
m_pLabel(NULL)
{
m_pLabel = new QLabel("Hello Qt for Android!", this);
m_pLabel->setGeometry(QApplication::desktop()->screenGeometry());
m_pLabel->setAlignment(Qt::AlignCenter);
m_pLabel->setStyleSheet("background-color:#006600; color:#FFFFFF");
}
MainWindow::~MainWindow()
{
}
void MainWindow::resizeEvent(QResizeEvent''' /*event*/)
{
m_pLabel->setGeometry(QApplication::desktop()->screenGeometry());
}
Testing
Connect your device to the computer and run the application from Necessitas Qt SDK Qt Creator. The Qt application will automatically start on the Android device. You might be prompted to download dependencies using Ministro. Follow the instruction to install all required components.
This example application has been successfully tested on LG GT540 Optimus with Android 2.1.
See Also
How to use Necessitas 0.2.1 Emulator on Windows 7
How to write Qt apps for Android to write Qt apps for Android/
Setup QtCreator QtCreator/