Auf dieser Seite wird (in aller Kürze) erklärt, wie Sie
Qtopia-Applikationen unter Mac OS X erstellen können. Sie benötigen
dazu die native und Cross-Version
von Qtopia.
Sie finden hier keine Details
zu Qt und Qtopia, aber es gibt jede Menge Einführungen im Netz
(und auch in der Dokumentation, die bei Qt dabei ist - werfen Sie
einen Blick in das Verzeichnis "<src-dir>/qtopia.mac/qt-x11/doc").
Wenn Sie Informationen im Netz finden, seien Sie vorsichtig mit
Anweisungen zum Setzen von QTDIR , TMAKEPATH und
ähnlichen Umgebungsvariablen. Aller Wahrscheinlichkeit nach werden
diese Dinge nicht unverändert auf dem Mac laufen - Sie finden allerdings
weiter unten ein Skript, das die Handhabung ziemlich einfach machen
sollte.
Erstellen Sie als erstes ein Verzeichnis, das alle Dateien
der Anwendung aufnehmen wird (ein minimales Beispiel mit zwei
Buttons und einer Dialog-Box).
Um GUI-Elemente darstellen zu können, wird zunächst ein Haupt-Widget benötigt.
Die Klasse für dieses Widget wird in der Header-Datei "mini.h"
definiert:
#include <qlayout.h>
#include <qwidget.h>
#include <qpushbutton.h>
class Mini : public QWidget {
Q_OBJECT
public:
Mini(QWidget* parent = 0, const char* name = 0, WFlags flags = 0);
QPushButton* _sayHiButton;
QPushButton* _exitButton;
public slots:
void sayHi(); // Slot connected with "Say hi" button
void exit(); // Slot connected with Exit button
protected:
QGridLayout* _miniLayout;
};
Die zwei Variablen vom Typ QPushButton zeigen auf
die zwei Buttons, die in der Mini-Anwendung verwendet werden.
Die Slots sayHi() und exit() reagieren
auf Klicks auf diese Buttons. _miniLayout schließlich
zeigt auf das verwendete Layout (ein simples Grid-Layout).
Der folgende Code stellt die Implementierung des Haupt-Widgets dar.
Speichern Sie ihn in einer Datei namens "mini.cpp":
#include "mini.h"
#include <qpushbutton.h>
#include <qlayout.h>
#include <qmessagebox.h>
// say hi
void Mini::sayHi() {
QMessageBox::information(this, tr("Mini"), tr("hi"));
}
// quit the application
void Mini::exit() {
this->close();
}
// ctor
Mini::Mini(QWidget* parent, const char* name, WFlags flags)
: QWidget(parent, name, flags) {
setCaption(tr("Qtopia Mini App"));
_miniLayout = new QGridLayout(this);
_sayHiButton = new QPushButton(this);
_sayHiButton->setText(tr("Say hi!"));
_sayHiButton->setMaximumHeight(40);
_miniLayout->addWidget(_sayHiButton, 0, 0);
_exitButton = new QPushButton(this);
_exitButton->setText(tr("Exit"));
_exitButton->setMaximumHeight(40);
_miniLayout->addWidget(_exitButton, 1, 0);
_miniLayout->setMargin(10);
connect(_sayHiButton, SIGNAL(clicked()), this, SLOT(sayHi()));
connect(_exitButton, SIGNAL(clicked()), this, SLOT(exit()));
}
sayHi() und exit() machen genau das, was
ihre Namen sagen. Alles andere spielt sich im Konstruktor ab:
- Der Titel des Widgets wird auf "Qtopia Mini App" gesetzt.
- Ein einfaches Grid-Layout und zwei Buttons werden erstellt.
Die Buttons werden dem Layout in Spalte 0 und den Zeilen 0
und 1 hinzugefügt.
- Das Layout bekommt einen breiteren Rand.
- Schließlich werden die Slots mit den clicked-Signalen der
Buttons verbunden.
Die letzte Quell-Datei für die Mini-Anwendung ("main.cpp")
enthält die main() -Funktion der Anwendung:
#include "mini.h"
#include <qtopia/qpeapplication.h>
int main(int argc, char *argv[]) {
QPEApplication app(argc, argv);
Mini m;
app.showMainWidget(&m);
return app.exec();
}
Sie können ein Makefile für eine Qtopia-Anwendung von Hand erstellen,
aber es ist einfacher, Trolltechs tmake zu benutzen. tmake liest eine
Projekt-Datei ein, die Details über die Anwendung enthält, und erzeugt
daraus ein Makefile. Die Projekt-Datei für die Mini-Anwendung
("mini.pro") sieht folgendermaßen aus:
TEMPLATE = app
CONFIG = qt warn_on debug
HEADERS = mini.h
SOURCES = main.cpp mini.cpp
INCLUDEPATH += $(QPEDIR)/include
DEPENDPATH += $(QPEDIR)/include
LIBS += -lqpe
TARGET = mini
Mit TEMPLATE wird im wesentlichen bestimmt, ob es sich um
eine Bibliothek oder eine Anwendung handelt. Der CONFIG -Eintrag
wird benutzt, um Dinge wie Debug- oder Release-Build festzulegen.
TARGET ist der Name der zu generierenden ausführbaren Datei.
Die übrigen Einträge enthalten die Namen der Quellcode- und Header-Dateien der
Anwendung sowie ihre Abhängigkeiten. (QPE bedeutet "Qt Palmtop Environment" und
wird häufig als Abkürzung für Qtopia benutzt.)
Nachdem Sie die Projekt-Datei gespeichert haben, können Sie mit tmake, über
Umgebungsvariablen gesteuert, ein Makefile erzeugen. Um die Handhabung zu
vereinfachen, können Sie dieses
Skript verwenden:
> cd /some/path
> ./makeenv.sh --srcdir <src-dir> --workdir <work-dir>
<src-dir> und <work-dir> sind die gleichen Verzeichnisse wie
beim Erstellen des Cross-Compilers und von Qtopia. Das Skript generiert
zwei Dateien: "native.env" und "cross.env". Diese Dateien können benutzt
werden, um alle Variablen zu setzen, die zum Übersetzen und Ausführen
von nativen und Cross-Versionen von Anwendungen benötigt werden.
Erstellen Sie als erstes eine native Version der Mini-Anwendung:
> source /some/path/native.env
> cd <directory with the mini.pro and source files>
> tmake -o Makefile mini.pro
> make
"native.env" kümmert sich um das Setzen der Umgebungsvariablen (inklusive
PATH, so dass tmake gefunden werden kann). Danach erzeugt tmake ein Makefile,
und make erstellt die native Version der Anwendung.
Um die Anwendung auszuführen, starten Sie Qtopia und geben Sie die folgenden
Kommandos in einem xterm-Fenster ein:
> source /some/path/native.env
> cd <directory with the mini files>
> ./mini
Die Mini-Anwendung sollte jetzt in qvfb erscheinen.
Der letzte Schritte ist die Cross-Compilierung der Anwendung für den
Zaurus (oder iPAQ mit Opie). Am einfachsten ist es, wenn Sie das Makefile
neu erstellen, aber dieses Mal mit geänderten Umgebungsvariablen
(Sie können natürlich auch zwei getrennte Makefiles erzeugen):
> source /some/path/cross.env
> cd <directory with the mini files>
> make clean
> tmake -o Makefile mini.pro
> make
Sie sollten jetzt die Mini-Anwendung auf dem Zaurus ausführen können
(während Sie beim Versuch, sie auf dem Mac laufen zu lassen, eine
Fehlermeldung erhalten).
Das war nur eine sehr kurze Einführung, und Sie sollten das Web und
Trolltechs Dokumentation benutzen, um nähere Informationen zu erhalten.
Viel Spaß beim Entwickeln!
Skript zur Erstellung von nativen und Cross-Umgebungs-Skripten (4 KB) | makeenv.sh |
Letzte Änderung: 14.06.2003
|