How to Create and Run Qt Application for Android/bg: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
[[Category:Developing_with_Qt::Ports::Android]]<br />[[Category:HowTo]]<br />[[Category:Tutorial]]
[[Category:Developing_with_Qt::Ports::Android]]
[[Category:HowTo]]
[[Category:Tutorial]]


[toc align_right=&quot;yes&amp;quot; depth=&quot;2&amp;quot;]
[toc align_right="yes" depth="2"]


'''Български''' [[How_to_Create_and_Run_Qt_Application_for_Android|English]]
'''Български''' [[How_to_Create_and_Run_Qt_Application_for_Android|English]]
Line 7: Line 9:
= Как се създават и пускат Qt приложения на Android =
= Как се създават и пускат Qt приложения на Android =


Чрез &quot;Necessitas&amp;quot;:http://developer.qt.nokia.com/wiki/Necessitas Qt SDK програмистите имат възможност да пускат Qt приложения на устройства с Android. Това кратко ръководство ще покаже основните стъпки, за да се направи проста Qt програма за Android.
Чрез "Necessitas":http://developer.qt.nokia.com/wiki/Necessitas Qt SDK програмистите имат възможност да пускат Qt приложения на устройства с Android. Това кратко ръководство ще покаже основните стъпки, за да се направи проста Qt програма за Android.


== Изисквания ==
== Изисквания ==
Line 17: Line 19:


# Стартирайте Qt Creator от Necessitas Qt SDK
# Стартирайте Qt Creator от Necessitas Qt SDK
# Натиснете '''File &gt; New file or project…''' и следвайте инструкциите
# Натиснете '''File > New file or project…''' и следвайте инструкциите
# Изберете '''Qt Widget Project''' и '''Qt Gui Application'''
# Изберете '''Qt Widget Project''' и '''Qt Gui Application'''
# Въведете име на проекта и път до неговата директория
# Въведете име на проекта и път до неговата директория
Line 26: Line 28:
=== Съвети ===
=== Съвети ===


* За да промените общата информация за приложението, манифест файла за Android, разрешенията за Android или списъка на библиотеки отидете в '''Projects &gt; Run Settings &gt; Package configuration &gt; Details'''.
* За да промените общата информация за приложението, манифест файла за Android, разрешенията за Android или списъка на библиотеки отидете в '''Projects > Run Settings > Package configuration > Details'''.


* За селектирате подходящо Android SDK, което искате да използвате от Qt Creator отидете в '''Projects &gt; Run Settings &gt; Package configuration &gt; Details &gt; Manifest'''.
* За селектирате подходящо Android SDK, което искате да използвате от Qt Creator отидете в '''Projects > Run Settings > Package configuration > Details > Manifest'''.


* За да промените конфигурацията за поставяне на проекта от Qt Creator отидете в '''Projects &gt; Run Settings &gt; Configuration configuration &gt; Details'''.
* За да промените конфигурацията за поставяне на проекта от Qt Creator отидете в '''Projects > Run Settings > Configuration configuration > Details'''.


== Програмен код ==
== Програмен код ==
Line 39: Line 41:


<code>QT ''= core gui
<code>QT ''= core gui
<br />TARGET = test<br />TEMPLATE = app


<br />SOURCES''= main.cpp mainwindow.cpp
TARGET = test
TEMPLATE = app
 
 
SOURCES''= main.cpp mainwindow.cpp


HEADERS ''= mainwindow.h
HEADERS ''= mainwindow.h
<br />FORMS''= mainwindow.ui


CONFIG ''= mobility<br />MOBILITY =
FORMS''= mainwindow.ui
<br />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>
 
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 &lt;QtGui/QApplication&amp;gt;<br />#include &quot;mainwindow.h&amp;quot;
<code>#include <QtGui/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


int main(int argc, char '''argv[])<br />{<br /> QApplication a(argc, argv);<br /> MainWindow w;<br />#if defined(Q_WS_S60)<br /> w.showMaximized();<br />#else<br /> w.show();<br />#endif
<code>#ifndef MAINWINDOW_H
<br /> return a.exec&amp;amp;#40;&amp;#41;;<br />}</code>
#define MAINWINDOW_H
<br />''' mainwindow.h


<code>#ifndef MAINWINDOW_H<br />#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel>


#include &lt;QMainWindow&amp;gt;<br />#include &lt;QLabel&amp;gt;
namespace Ui {
class MainWindow;
}


namespace Ui {<br /> class MainWindow;<br />}
class MainWindow : public QMainWindow
{
Q_OBJECT


class MainWindow : public QMainWindow<br />{<br /> Q_OBJECT
public:
explicit MainWindow(QWidget '''parent = 0);
~MainWindow();
 
private:


public:<br /> explicit MainWindow(QWidget '''parent = 0);<br /> ~MainWindow();
// from QMainWindow
<br />private:
void resizeEvent(QResizeEvent''' event);
<br /> // from QMainWindow<br /> void resizeEvent(QResizeEvent''' event);


private:
private:


QLabel* m_pLabel;<br />};
QLabel* m_pLabel;
};


#endif // MAINWINDOW_H</code>
#endif // MAINWINDOW_H</code>
Line 77: Line 109:
* mainwindow.cpp
* mainwindow.cpp


<code>#include &quot;mainwindow.h&amp;quot;
<code>#include "mainwindow.h"
 
#include <QApplication>
#include <QDesktopWidget>
#include <QtCore/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()
{


#include &lt;QApplication&amp;gt;<br />#include &lt;QDesktopWidget&amp;gt;<br />#include &lt;QtCore/QCoreApplication&amp;gt;
}


MainWindow::MainWindow(QWidget '''parent) :<br /> QMainWindow(parent),<br /> m_pLabel(NULL)<br />{<br /> m_pLabel = new QLabel(&quot;Hello Qt for Android!&quot;, this);<br /> m_pLabel-&gt;setGeometry(QApplication::desktop()<s>&gt;screenGeometry());<br /> m_pLabel</s>&gt;setAlignment(Qt::AlignCenter);<br /> m_pLabel-&gt;setStyleSheet(&quot;background-color:#006600; color:#FFFFFF&amp;quot;);<br />}
void MainWindow::resizeEvent(QResizeEvent''' /*event*/)
<br />MainWindow::~MainWindow()<br />{
{
<br />}
m_pLabel->setGeometry(QApplication::desktop()->screenGeometry());
<br />void MainWindow::resizeEvent(QResizeEvent''' /*event*/)<br />{<br /> m_pLabel-&gt;setGeometry(QApplication::desktop()-&gt;screenGeometry());<br />}</code>
}</code>


== Тестване ==
== Тестване ==
Line 90: Line 139:
Свържете вашето устройство към компютър и пуснете приложението от Qt Creator към Necessitas. Qt приложението автоматилно ще се стартира на Android устройството. Може би ще бъдете попитани да свалите зависимости чрез Ministro. Следвайте инструкциите, за да свалите всички необходими компоненти.
Свържете вашето устройство към компютър и пуснете приложението от Qt Creator към Necessitas. Qt приложението автоматилно ще се стартира на Android устройството. Може би ще бъдете попитани да свалите зависимости чрез Ministro. Следвайте инструкциите, за да свалите всички необходими компоненти.


Тази примерна програма е успешно тествана на &quot;LG GT540 Optimus&amp;quot;:http://www.gsmarena.com/lg_gt540_optimus-3081.php с Android 2.1.
Тази примерна програма е успешно тествана на "LG GT540 Optimus":http://www.gsmarena.com/lg_gt540_optimus-3081.php с Android 2.1.


== Вижте също ==
== Вижте също ==


&quot;How to use Necessitas 0.2.1 Emulator on Windows 7&amp;quot;:http://developer.qt.nokia.com/wiki/How_to_use_Necessitas_Emulator_on_Windows_7<br />&quot;How to write Qt apps for Android&amp;quot;:http://sourceforge.net/p/necessitas/wiki/How to write Qt apps for Android/<br />&quot;Setup QtCreator&amp;quot;:http://sourceforge.net/p/necessitas/wiki/Setup QtCreator/
"How to use Necessitas 0.2.1 Emulator on Windows 7":http://developer.qt.nokia.com/wiki/How_to_use_Necessitas_Emulator_on_Windows_7
"How to write Qt apps for Android":http://sourceforge.net/p/necessitas/wiki/How to write Qt apps for Android/
"Setup QtCreator":http://sourceforge.net/p/necessitas/wiki/Setup QtCreator/

Revision as of 11:00, 25 February 2015


[toc align_right="yes" depth="2"]

Български English

Как се създават и пускат Qt приложения на Android

Чрез "Necessitas":http://developer.qt.nokia.com/wiki/Necessitas Qt SDK програмистите имат възможност да пускат Qt приложения на устройства с Android. Това кратко ръководство ще покаже основните стъпки, за да се направи проста Qt програма за Android.

Изисквания

  • Инсталиран Necessitas SDK
  • Android устройство

Инструкции

  1. Стартирайте Qt Creator от Necessitas Qt SDK
  2. Натиснете File > New file or project… и следвайте инструкциите
  3. Изберете Qt Widget Project и Qt Gui Application
  4. Въведете име на проекта и път до неговата директория
  5. Изберете Android като Target
  6. След като проектът е създаден отворете Projects и се убедете, че настройките за Build и Run са правилно конфирирани.
  7. Редактирайте програмния код и когато сте готови пуснете приложението на Android устройство.

Съвети

  • За да промените общата информация за приложението, манифест файла за Android, разрешенията за Android или списъка на библиотеки отидете в Projects > Run Settings > Package configuration > Details.
  • За селектирате подходящо Android SDK, което искате да използвате от Qt Creator отидете в Projects > Run Settings > Package configuration > Details > Manifest.
  • За да промените конфигурацията за поставяне на проекта от Qt Creator отидете в Projects > Run Settings > Configuration configuration > Details.

Програмен код

Както можете да видите програмния код не съдържа нищо специфично само за Android, което го прави напълно преносим. Някой допълнителни файлове, които са неодходими за necessitas са добавени в pro файла на проекта.

  • 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 <QtGui/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 <QtCore/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());
}

Тестване

Свържете вашето устройство към компютър и пуснете приложението от Qt Creator към Necessitas. Qt приложението автоматилно ще се стартира на Android устройството. Може би ще бъдете попитани да свалите зависимости чрез Ministro. Следвайте инструкциите, за да свалите всички необходими компоненти.

Тази примерна програма е успешно тествана на "LG GT540 Optimus":http://www.gsmarena.com/lg_gt540_optimus-3081.php с Android 2.1.

Вижте също

"How to use Necessitas 0.2.1 Emulator on Windows 7":http://developer.qt.nokia.com/wiki/How_to_use_Necessitas_Emulator_on_Windows_7 "How to write Qt apps for Android":http://sourceforge.net/p/necessitas/wiki/How to write Qt apps for Android/ "Setup QtCreator":http://sourceforge.net/p/necessitas/wiki/Setup QtCreator/