Qt

Qt
Qt
Qt-Logo
Entwickler: Qt Software
Aktuelle Version: 4.5.1
(23. April 2009)
Betriebssystem: Unix, Linux (mit X Window System – X11), Mac OS X, Windows
Programmiersprache: C++
Kategorie: Klassenbibliothek
Lizenz: Duales Lizenzsystem (Proprietär und GPL), ab Version 4.5 zusätzlich LGPL
Deutschsprachig: ja
Qt Software

Qt ist eine C++-Klassenbibliothek für die plattformübergreifende Programmierung grafischer Benutzeroberflächen. Für verschiedene Programmiersprachen existieren Anbindungen. Qt wird insbesondere in den Bibliotheken des K Desktop Environments verwendet.

Qt wurde von dem norwegischen Unternehmen Trolltech (ehemals Quasar Technologies) entwickelt und ist für verschiedene Betriebssysteme bzw. Grafikplattformen, wie X11 (Unix-Derivate), Mac OS X, Windows und als PDA-Version erhältlich. Seit dem das Unternehmen Anfang 2008 von Nokia aufgekauft wurde, wird die Entwicklung in der neuen Sparte Qt Software fortgeführt. Neben der Entwicklung von grafischen Benutzeroberflächen bietet Qt umfangreiche Funktionen zur Internationalisierung sowie Datenbankfunktionen und XML-Unterstützung an.

Die Klassenbibliothek steht bis zur Version 4.4 sowohl unter der GNU General Public License (GPL) als auch unter einer proprietären Lizenz zur Verfügung. Die proprietäre Lizenz wird allerdings nur benötigt, falls mit der Bibliothek Produkte entwickelt werden, die unter keiner freien Lizenz stehen (siehe Duales Lizenzsystem). Ab Version 4.5 wird Qt auch unter der LGPL veröffentlicht.

Qt verwendet C++ mit mehreren nicht standardkonformen (IEC 14882) Erweiterungen. Durch einen zusätzlichen Präprozessor wird vor der Kompilierung jedoch standardkonformer Code erzeugt. Qt Software bietet auch eine Java API unter dem Namen Qt Jambi an. Es gibt auch Anbindungen für Python (PyQt), Ruby (QtRuby), C# (Qyoto-Projekt), Java (Qt Java), PHP (PHP-Qt) und Perl (PerlQt), die allerdings nicht von Qt Software betreut werden.

Inhaltsverzeichnis

Geschichte

Datum Version
10. Juli 1998 1.40
2. Oktober 1998 1.41
19. Dezember 1998 1.42
13. März 1999 1.44
26. Juni 1999 2.0
13. April 2000 2.1
7. Dezember 2000 2.2
8. März 2001 2.3
16. Oktober 2001 3
14. November 2001 3.1
24. Juli 2003 3.2
5. Februar 2004 3.3
29. Juni 2005 4
20. Dezember 2005 4.1
4. Oktober 2006 4.2
30. Mai 2007 4.3
6. Mai 2008 4.4
3. März 2009 4.5
23. April 2009 4.5.1

Anfänge und Namensentwicklung

Haavard Nord und Eirik Chambe-Eng (die ursprünglichen Entwickler von Qt und später CEO und Präsident von Trolltech) begannen mit der Entwicklung von Qt im Jahre 1991, drei Jahre bevor das Unternehmen Quasar Technologies gegründet wurde. Später änderten sie den Namen in Troll Tech und dann in Trolltech.

Ursprünglich stand die Abkürzung Qt für Quasar toolkit. Quasare sind die dauerhaft am stärksten strahlenden Objekte im Universum. Durch den Bezug auf solche unvorstellbar energieintensiven Objekte sollte wohl der ehrgeizige Anspruch der Entwickler zum Ausdruck kommen, ein bedeutendes Programmierwerkzeug zu schaffen, weswegen das Unternehmen Trolltech wohl auch ursprünglich Quasar Technologies hieß. Eine andere Herleitung des Namens Qt ist, dass das Q nach Haavard Nords Geschmack besonders schön in seinem Emacs anzusehen war und das t an Xt (das X-Toolkit) erinnerte.[1]

Heute hat die Abkürzung Qt jedoch nicht mehr diese Bedeutung und wird offiziell wie das englische Wort cute ausgesprochen. Dieses Wort soll die Ansicht der Entwickler ausdrücken, dass der Quelltext und die API von Qt eben cute sei, was auf Deutsch unter anderem so viel wie süß, hübsch usw., aber auch pfiffig heißt.

Lizenzierung

Kontroverse Auseinandersetzungen entstanden um das Jahr 1998, als sich abzeichnete, dass KDE sich als Standard-Desktop unter Linux durchsetzen würde. Da KDE zum großen Teil auf Qt basiert, machte sich ein großer Teil der Open-Source- und Freie Software-Gemeinde Sorgen, dass ein so wichtiger Teil des Systems unter kommerzieller Kontrolle stand. Dies führte zu zwei Entwicklungen: Erstens wurde das Harmony-Toolkit entwickelt, welches die Funktionen von Qt exakt kopieren, jedoch unter einer Freie-Software-Lizenz stehen sollte. Zweitens begann die Arbeit am GNOME-Desktop, der ähnliche Funktionen wie KDE bieten sollte, allerdings das GIMP Toolkit (GTK+) verwendete, das Freie Software war, aber in C programmiert ist.

Bis Version 1.45 verwendete Trolltech die FreeQt-License für Qt. Diese war weder eine Open-Source- noch eine freie Lizenz. Es war zwar erlaubt, den Quellcode einzusehen, modifizierte Versionen durften allerdings nicht veröffentlicht werden. Mit dem Erscheinen von Version 2.0 wechselte Trolltech zur Q Public License (QPL), einer Open-Source-Lizenz, die aber von der Free Software Foundation als inkompatibel zur GPL eingestuft wurde. Als der Druck auf Trolltech größer wurde und das Debian-Projekt sich wegen Lizenzproblemen weigerte, KDE zu vertreiben[2], änderte Trolltech im Jahre 2000 die Lizenz für die Linux-Variante des Toolkits. Seit Version 2.2 gab es fortan die Linux-Variante unter zwei Lizenzen: der GPL und der QPL (siehe Duales Lizenzsystem).

Die erste Version von Qt hatte nur zwei Varianten, Qt/X11 für Unix und Qt/Windows für Windows. Die Windows-Variante war ausschließlich unter einer kommerziellen Lizenz verfügbar. Gegen Ende des Jahres 2001 veröffentlichte Trolltech Qt 3.0 mit zusätzlicher Unterstützung für die Mac-OS-X-Plattform. Die Mac-OS-X-Variante war auch nur unter einer kommerziellen Lizenz erhältlich, bis im Juni 2003 Trolltech die Version 3.2 der Mac-OS-X-Variante auch unter die GPL stellte.

Im Februar 2005 kündigte Trolltech an, Qt ab der Version 4.0 auch für die Windows-Plattform unter die GPL stellen zu wollen[3]. Dies bestätigte sich, als im Juni 2005 Trolltech ein einheitliches duales Lizenzsystem für alle unterstützten Plattformen veröffentlichte. Heute gibt es für jede Plattform proprietäre und Open-Source-Edition (GPL-Edition).

Seit der Version 4.3.1 vom 9. August 2007 räumt Trolltech Ausnahmen bei der durch die GPL lizenzierten Open-Source-Version ein, die es ermöglicht, Programme, die Qt benutzen, unter einer nicht-GPL-kompatiblen Lizenz zu veröffentlichen. Die akzeptierten Lizenzen sind namentlich in einer separaten Liste aufgeführt. Weiterhin muss der Quellcode des Programms des Unternehmens Trolltech im selben Ausmaß zugänglich gemacht werden, wie er auch anderen Benutzern zur Verfügung steht, und die Rechte des Autors, Diskussionen über das Programm zu führen und den Quellcode für jeden zugänglich zu machen, dürfen nicht durch jegliche Rechtsmittel (wie beispielsweise besondere Verträge) beschnitten werden. [4] [5].

Trolltech hat angekündigt, weitere Versionen von Qt auch unter der dritten Version der GPL zu veröffentlichen.[6]

Im Januar 2009 teilte Qt Software mit, dass die Version 4.5 unter der LGPL verfügbar sein wird.[7]

Absicherung über die KDE Free Qt Foundation

Noch bevor Qt doppellizenziert wurde, wurde die „KDE Free Qt Foundation“ ins Leben gerufen, um zu verhindern, dass Qt im Falle einer Insolvenz oder Übernahme von Trolltech unter eine restriktivere Lizenz als die QPL fiele. Sie besteht aus jeweils zwei Vertretern von Trolltech und dem KDE e. V., wobei letztere im Zweifelsfall bei Abstimmungen die Majorität haben. Falls Trolltech länger als zwölf Monate keine Aktualisierungen (Updates) unter einer Open-Source-Lizenz liefern sollte, ist die „KDE Free Qt Foundation“ berechtigt, die letzte freie Qt-Version unter der BSD-Lizenz freizugeben.

Varianten

Es gibt derzeit die folgenden Varianten des Qt-Toolkits, die auf verschiedenen Plattformen laufen. Sie sind alle sowohl unter der GPL, als auch unter einer proprietären Lizenz verfügbar, wobei Trolltech in den GPL-Varianten jedoch nur Unterstützung für den ebenfalls freien C++-Compiler der GNU Compiler Collection anbietet:

  • Qt/X11 – Qt für das X Window System, welches unter Unix und Unix-Derivaten wie GNU/Linux läuft.
  • Qt/Windows – Qt für Microsoft Windows.
  • Qt/Mac Carbon – Qt für Apple Mac OS X – benutzt das Carbon-Framework von Apple.
  • Qt/Mac Cocoa – Qt für Apple Mac OS X – veröffentlicht mit Qt 4.5, nutzt das Cocoa-Framework von Apple.
  • Qtopia Core (ehemals Qt/Embedded) – Mit Qt/Embedded stellte Trolltech eine Variante vor, die den Linux-Framebuffer statt des X-Window-Systems benutzt. Diese wird vor allem in eingebettenen Geräten auf Linux-Basis eingesetzt (PDAs, Smartphones und Embedded Linux). Bekannt wurde sie vor allem durch den Zaurus-PDA von Sharp, der auf Qt/Embedded und deren grafische Oberfläche Qtopia aufsetzte.

Aktuelle Version

Trolltech hat mit Qt 4 am 28. Juni 2005 fünf neue Technologien eingeführt:

  • Tulip – Ein Satz neuer Container-Klassen.
  • Interview – Eine Modell-Ansicht-Architektur für elementbasierte Ansichten.
  • Arthur – Ein neues 2D-Zeichenframework.
  • ScribeUnicode-Textausgabe mit öffentlicher API zur Unterstützung von einfachen Textlayouts.
  • MainWindow – Eine modernere Hauptfenster-Architektur, die Symbolleisten, Menüs und andockbare Fenster ermöglicht.

Qt 4.1 wurde am 19. Dezember 2005 veröffentlicht und brachte SVG-Tiny-Unterstützung, ein PDF-Backend zum Qt-Drucksystem, und weitere Erweiterungen und Verbesserungen.[8].

Qt 4.2 erschien am 4. Oktober 2006 und brachte native CSS-Unterstützung zum Gestalten von Widgets. Auch wurden die QCanvas-Klassen von Qt 3.x zur Darstellung von zweidimensionalen Grafikobjekten durch ein Framework namens QGraphicsView zum Rendern von Grafikobjekten auf dem Bildschirm ersetzt.[9]

Seit dem 30. Mai 2007 steht Version 4.3 zur Verfügung. Sie brachte erweiterte Windows-Vista-Unterstützung, eine verbesserte OpenGL-Engine, sowie die Möglichkeit, SVG-Dateien zu erzeugen. Außerdem wurden eine ECMAScript-Engine namens QtScript und die Unterstützung von SSL-Verbindungen hinzugefügt.[10]

Qt 4.4 wurde am 6. Mai 2008 veröffentlicht. [11]

Seit 3. März 2009 gibt es mit Qt 4.5 die neue Entwicklungsumgebung Qt Creator, womit man Desktop-Anwendungen für Linux, Mac OS X und Windows ohne zusätzliche Entwicklungswerkzeuge erzeugen können soll.[12]

Editionen

von Trolltech

Es sind folgende vier Editionen von Qt erhältlich:

  • Qt Console – für die Entwicklung von Programmen ohne GUI
  • Qt Desktop Light – es fehlen Netzwerk-, Datenbank- und OpenGL-Unterstützung sowie das Graphics View.
  • Qt Desktop – die vollständige Bibliothek
  • Open Source Edition – die vollständige Bibliothek zur Entwicklung von Open-Source-Anwendungen

Die ersten drei Editionen sind proprietär und werden unter einer kommerziellen Lizenz veröffentlicht. Im Gegensatz zu dieser ist die Open Source Edition unter der GPL erhältlich. Alle kommerziellen Editionen unterstützen eine große Anzahl von Compilern, einschließlich des GCC C++-Compilers, und im Falle der Qt/Windows-Version auch eine Integration in Microsoft Visual Studio. Die Qt Open Source Edition enthält nur Unterstützung für den C++-Compiler der GCC (mit Ausnahme von Qt/Windows, welches seit Qt 4.3.2 auch nativ den Microsoft Visual C++ Compiler ohne Patches unterstützt[13]). Auch eine Integration in die freie Entwicklungsumgebung Eclipse ist vorhanden, welche mit Qt-Versionen ab 4.1 zusammenarbeitet.[14]

von anderen Anbietern

Da es sich bei Qt um Freie Software handelt, gibt es auch Editionen anderer Anbieter:

  • Qt/Windows Free Edition – Das KDE/Cygwin-Projekt arbeitete an einer nativen Windows-Version von Qt 3, im Blick auf KDE, die vom freien Quellcode der Qt/X11-Variante portiert worden ist und somit auch vollständig GPL-lizenziert ist. Das Projekt wurde gestartet, um auch freie Software für Windows programmieren zu können. Mit dem Erscheinen von Qt 4 hat dieses Bestreben an Aufmerksamkeit verloren und wird nur noch mit kleineren Patches vom qtwin-Projekt weiter gepflegt. In Zukunft wird sich das Projekt weiter um Patches zur Qt Open Source Edition von Trolltech bemühen, sodass diese dann auch andere Compiler (Microsoft und Borland) unterstützt.

Design

Das Qt3-Build-System im Detail

Bibliotheksaufbau

Seit Version 4.0 ist die gesamte Bibliothek in Module gegliedert, wodurch kleinere und schnellere Programme möglich sind, da nur die verwendeten Module eingebunden werden müssen:

  • QtCore – Kern-Klassen, die von allen anderen Modulen genutzt werden
  • QtGui – Komponenten, die zur Gestaltung von grafischen Benutzeroberflächen (GUIs) dienen
  • QtNetwork – Klassen zur Netzwerk-Programmierung
  • QtOpenGL – Unterstützung von OpenGL
  • QtSql – Klasse zur Datenbankintegration mit SQL
  • QtScript – Klassen zur Verarbeitung von ECMAScript
  • QtXml – Klassen zur Verwendung von XML
  • QtSvg – Klassen zur Verwendung von SVG-Dateien (seit 4.1)
  • QtDesigner – Klassen zur Erweiterung des Qt-Designers
  • QtUiTools – Klassen zur Verwendung von Qt-Designer-Form in Anwendungen
  • QtAssistant – Unterstützung für Online-Hilfe
  • Qt3SupportKompatiblitätsklassen zu Qt 3
  • QtTest – Werkzeuge zum Testen der eigenen Anwendungen
  • WebKit – Klassen zur Darstellung von Webseiten (seit 4.4)
  • Phonon (KDE) – Klassen zur Einbindung von Multimedia-Inhalten (seit 4.4)

In der kommerziellen Edition sind noch die Module QAxContainer und QAxServer für die Unterstützung von ActiveX vorhanden. Auch enthalten die Unix-Varianten ein Modul namens QtDBus zur Interprozesskommunikation mit Hilfe des D-Buses.

Als weitere kommerzielle Bibliothek gibt es QSA - Qt Script for Applications, welches Entwicklern erlaubt ihre Qt-Anwendungen mit Skriptfunktionen zu erweitern. Es ist seit Qt 4.3 allerdings veraltet (Unterstützung endet am 1. Dezember 2008) und durch das in vielfacher Hinsicht bessere QtScript ersetzt worden, welches ECMAScript/JavaScript kompatibel ist. [15]

Programmierbeispiel

Das Ergebnis des Beispielprogrammes

Das folgende Beispiel erzeugt ein Fenster mit einem Titel, der aufgrund der geringen Fenstergröße allerdings versteckt ist, einem Beschriftungsfeld (Label) und einer Schaltfläche (Button). Die Funktionen werden mittels „signals“ und „slots“ verbunden, so dass das Programm bei einem Klick auf den Button beendet wird. Die beiden Widgets werden anschließend im Hintergrund gezeichnet und das Fenster schließlich angezeigt. Das Beispielprogramm wird kompiliert mit dem Aufruf von qmake -project && qmake && make innerhalb des Ordners, indem sich die Datei befindet.

#include <QtGui>
 
int main(int argc, char **argv)
{
	QApplication app(argc, argv);
 
	QWidget *window = new QWidget;
	window->setWindowTitle("Qt4-Example");
 
	QLabel *label = new QLabel("Hello World!");
	label->setAlignment(Qt::AlignCenter);
 
	QPushButton *button = new QPushButton("&Exit");
	QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));
 
	QVBoxLayout *layout = new QVBoxLayout;
	layout->addWidget(label);
	layout->addWidget(button);
 
	window->setLayout(layout);
	window->show();
 
	return app.exec();
}

Benutzeroberflächen können mit Qt entweder explizit programmiert, oder mit dem Qt Designer gezeichnet werden.

Signal-Slot-Konzept

Eine Besonderheit ist die Verwendung von „signals“ und „slots“, die auf einfache Art und Weise die Kommunikation zwischen einzelnen Objekten ermöglicht. Bei den meisten anderen Klassenbibliotheken wird dies durch Rückruffunktionen (callback function) realisiert. Aus der Sicht der Entwickler haben Rückruffunktionen zwar den Vorteil einer höheren Ausführungsgeschwindigkeit, jedoch Nachteile bei der Pflege der Programme, da diese keine statische Typprüfung ermöglichen.

GUI-Emulation

Qt verwendete bis zur neusten Version eine eigene Zeichenengine sowie Steuerelemente. Es emulierte das unterschiedliche Aussehen auf den verschiedenen Plattformen (GUI-Emulation). Das machte das Portieren einfacher, da nur sehr wenige Klassen in Qt von der verwendeten Plattform abhängig waren. Der Nachteil bestand allerdings darin, dass Qt das Aussehen jeder Plattform präzise nachahmen musste, was nicht immer möglich war. Seit Qt 4.0 gibt es allerdings die Möglichkeit (wie auch in vielen anderen Toolkits, z. B. wxWidgets oder SWT), direkt plattformeigene Elemente zu verwenden. So gibt es nun die nativen QWindowsVistaStyle, QWindowsXPStyle und den QMacStyle. Diese Styles funktionieren nur auf dem passenden Betriebssystem (und sind dort auch der Standard). Es gibt nach wie vor aber auch plattformunabhängige "Styles", und diese lassen sich einfach (z. B. per Kommandozeile) aktivieren.

Werkzeuge

Zusätzlich zu den Bibliotheken enthält Qt noch eine Reihe weiterer zusätzlicher Hilfsprogramme, von denen einige unersetzlich für die Arbeit mit Qt sind.

Der Qt-Designer in der Version 4.3.4
  • Folgende Programme werden vom Programmierer genutzt, um XML-Dateien unter einer komfortablen Benutzeroberfläche zu bearbeiten:
    • Qt-Designer – zum Erstellen grafischer Oberflächen für Qt und Qt/Embedded (*.ui (XML) und *.qrc (XML))
    • Qt-Linguist – für Übersetzungen des Programms (*.ts (XML))
  • Folgende Programme ermöglichen eine einfache Übersetzung. Zur Steuerung wird die Qt-Projekt-Datei verwendet:
    • lupdate – Extrahiert aus allen Quellcodedateien die zu übersetzenden Strings (→ *.ts (XML))
    • lrelease – *.ts (XML) → *.qm
  • qmake – Erstellt mit der Qt-Projekt-Datei (*.pro) ein Makefile, welches den Erstellungsprozess steuert. Neben den üblichen Programmen wie Compiler und Linker werden auch folgende Programme verwendet:
    • moc – Meta-Object-Compiler, erstellt Meta-Informationen über Klassen des Programms (*.h → moc_*.cpp), siehe unten.
    • uic – Userinterface-Compiler, erstellt C++-Quellcode aus UI-Dateien (*.ui (XML) → ui_*.h)
    • rcc – Ressourcen-Compiler (*.qrc (XML) → qrc_*.cpp)

Für die Benutzung der Online-Dokumentation wird der Qt-Assistant verwendet, der auch in eigene Projekte eingebunden werden kann.

Meta-Object-Compiler

Der Meta-Object-Compiler, auch bekannt als moc, ist ein Werkzeug, welches die Header-Dateien eines Projektes untersucht und Meta-Informationen über Klassen und sonstige Programmteile sammelt. Dies geschieht mit Hilfe von „Markierungen“, welche später vom Standard-Präprozesser entfernt werden. Aus diesen Informationen erstellt er wiederum C++-Code, in dem Funktionen implementiert werden, die ohne weitere Bibliotheken in C++ nicht vorhanden sind, wie Introspektion und das Signal-Slot-Konzept. Weitere Makros werden in selbst geschriebenen Header-Dateien expandiert, um deren Funktionsdeklarationen bereitzustellen.

Der Gebrauch eines zusätzlichen Werkzeuges wurde von einem Teil der C++-Programmierer kritisiert. Sie behaupteten, dass Qt-Programmierung keine C++-Programmierung mehr sei. Tatsächlich basiert die Implementation auf C-Makros, die bekanntlich nicht typsicher sind und den Namensraum verunreinigen. Dies ist aus der Sicht von Trolltech aber nötig, um das Signal-Slot-Konzept elegant zu implementieren. Als Qt 1.x veröffentlicht wurde, waren die Compilerunterschiede bezüglich generischer Programmierung noch zu groß, als dass man sich auf Templates hätte verlassen können.

Andere Anbindungen

  • Qt Jambi – Seit Juni 2007 existiert eine von Trolltech selbst entwickelte Version für Java.
  • PyQt – Das britische Unternehmen Riverbank Computing Ltd. hat unter diesem Namen eine Python-API entwickelt, die für Windows, Linux/Unix (X11) und Mac OS X wie auch Qt selbst wahlweise unter der GPL oder einer kommerziellen Lizenz erhältlich ist.
  • PHP-Qt – Open-Source-Projekt zur Verwendung von Qt in PHP-Skripten.
  • QtRuby – Auf der KDE-Projektseite findet man Bindings für Ruby.
  • Qyoto – Anbindung von Qt und KDE-Bibliotheken zur Verwendung in C# und anderen .NET-Sprachen mittels Mono.

Beispiele

Prominente Beispiele, in denen das Qt-Toolkit zum Einsatz kommt, sind:

Siehe auch

Literatur

  • Jasmin Blanchette, Mark Summerfield: C++ GUI-Programmierung mit Qt 4, ISBN 3-8273-2464-5
  • Daniel Molkentin: Qt 4 – Einführung in die Applikationsentwicklung, ISBN 3-937514-12-0
  • Jürgen Wolf: Qt 4 – GUI-Entwicklung mit C++, ISBN 978-3-8362-1030-0

Weblinks

Quellen

  1. Jasmin Blanchette, Mark Summerfield: C++ GUI Programming with Qt 4, Seite XV, ISBN 0131872494
  2. Joseph Carter: „Why Debian Doesn't Include KDE“ (englisch) bei Freshmeat.net
  3. Trolltech: „Trolltech to Extend Dual Licensing to Qt for Windows“
  4. Trolltech GPL Exception Version 1.2
  5. Heise Newsticker vom 9. August 2007
  6. heise open - Qt ist nun auch unter GPLv3 lizenzierbar
  7. Nokia to add LGPL Open Source licensing option for the Qt UI and application framework
  8. Trolltech Releases Qt 4.1
  9. Trolltech Brings Style Sheets to Desktop Applications with Qt 4.2
  10. Trolltech Releases Qt and Qtopia Core 4.3
  11. http://trolltech.com/company/newsroom/announcements/press.2008-05-02.5256347247 Qt 4.4 Framework Broadens Rich Application Development with Integration of Web Content and Portability to Mobile Devices
  12. heise online: Qt 4.5 und Entwicklungsumgebung Qt Creator veröffentlicht vom 3. März 2009
  13. http://labs.trolltech.com/blogs/2007/09/18/qtwindows-open-source-edition-to-support-vs-express
  14. Qt Eclipse Integration Downloads — Trolltech
  15. http://doc.trolltech.com/4.3/porting-qsa.html

Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”