Willkommen      Zaurus      Projekte      Dokumente      Kontakt   

  Mac OS X USB-Treiber  

  Mac OS X Cross-Compiler  

  Mac OS X Tools für Qtopia  

  Qtopia unter Mac OS X (Mini-Tutorial)  
    

  Überblick    Erstellen einer Anwendung    Übersetzen der Anwendung    Download   

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.

Die Mini-Anwendung unter Qtopia/Mac OS X

  Überblick    Erstellen einer Anwendung    Übersetzen der Anwendung    Download   

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();
}
				

  Überblick    Erstellen einer Anwendung    Übersetzen der Anwendung    Download   

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!

  Überblick    Erstellen einer Anwendung    Übersetzen der Anwendung    Download   

Skript zur Erstellung von nativen und Cross-Umgebungs-Skripten (4 KB)makeenv.sh


Letzte Änderung: 14.06.2003