Fohgel schrieb am 18. Oktober 2013 09:20
> ...
> Vielleicht ist es an der Zeit, sich ernsthaft mit QT zu beschäftigen.
> Gibt es empfehlenswerte Literatur für GTK-Umsteiger? Und: Besser QT5
> oder 4? Soll ja einige Unterschiede geben.
Literatur speziell für Umsteiger weiss ich nicht. Hilfreich zu
wissen: Seit Qt 4.6/4.7 gibt es zwei unterschiedliche GUI Paradigmen
in Qt:
- "Declaratives GUI-Design" mit QML + JavaScript
JavaScript kann für die "GUI-Logik" eingesetzt werden - je nachdem,
wie "cool" man JavaScript findet, kann man auch mit QML/JavaScript
eigenständige Applikationen entwickeln - aber grundsätzlich ist man
wohl besser bedient, wenn man die Business-/Programmlogik weiterhin
in C++ entwickelt
http://en.wikipedia.org/wiki/QML
http://qt-project.org/doc/qt-5.1/qtdoc/topics-ui.html#qml-graphical-u
ser-interfaces
- "Traditionelles/imperatives" GUI Design, mit typischen
"Widget-Hierarchien" (parent/child)
http://qt-project.org/doc/qt-5.1/qtwidgets/qtwidgets-index.html
In beiden Fällen gibt es einen GUI Designer - Qt Designer - der auch
im "Widget" Fall sogenannte *.ui (XML) Dateien generiert, welche dann
in reines C++ generiert werden (vom sogenannten uic - User Interface
Compiler). Die QML/JavaScript Dateien werden hingegen immer zur
Laufzeit interpretiert (darum braucht es für QML-Programme auch immer
einen JavaScript Interpreter, der dazugelinkt werden muss).
Die Qt Widgets gibt es weiterhin in Qt 5, sind aber offiziell als
"mature" (sprich: wird nicht mehr weiterentwickelt, nur noch Bug
fixing) gekennzeichnet. In der Tat kann man ein widget basiertes Qt 4
beinahe 1:1 unter Qt 5 kompilieren (anpassen muss man meist bloss ein
paar #include Pfade, wenn überhaupt).
Wenn du von GTK (oder von irgendeinem GUI framework wie Java Swing)
herkommst, wirst du dich wohl in nullkommanix in der Qt Widget Welt
heimisch fühlen: in C++ gibt es dieselben "addWidget/isVisible/show"
Methoden wie anderswo auch. Die Layout-Manager sind in Qt zudem
extrem flexibel und cool, und die i18n Unterstützung ist nirgendwo so
praxisgerecht umgesetzt wie in Qt (das behaupte ich jetzt einfach mal
so ;))
Bei QML hingegen müsstest du dich wohl etwas mehr einarbeiten. Ich
persönlich bevorzuge nach wie vor das "traditionelle GUI Paradigma"
mit hierarchischen Widget-Strukturen, vor allem auf dem Desktop!
QML ist vor allem bei "rich GUI" Anwendungen stark, wo Du "ein
weisses Papier" (Bildschirm) hast und wild draufloszeichnen willst,
und alles bitteschön animiert :) Das mag vor allem in "embedded
Bereich" hilfreich sein.
Aber da ich ohnehin den Qt Designer verwende und im Zweifelsfalle das
super C++ Widget API JavaScript 1000-fach vorziehe, kommt für mich
QML (und vor allem JavaScript!) nicht in Frage. Ich verstehe einfach
nicht, was an dem "deklarativen" so toll sein soll - ich finde es
persönlich nicht sehr attraktiv, "JavaScript/XML"-ähnliche Textfiles
manuell zu bearbeiten. Und Animationen NERVEN ;) (Und die paar
Animationen, die nicht nerven, macht auf Desktops ohnehin der
Desktop-Manager bzw. die bringe ich auch in C++ selber hin.) Aber wie
gesagt, alles meine persönliche Meinung, basierend darauf, dass das
"hierarchische Widget-Paradigma einfach funktioniert - und dies seit
Jahrzehnten.
In beiden Fällen - Qt Widgets und QML - würde ich aber einfach mal
hier anfangen:
http://qt-project.org/doc/qt-5.1/qtdoc/gettingstarted.html
:)
Gruss, Oliver
P.S. Für QML gibt es v.a. für das upcoming Qt 5.2 ebenfalls einen
Satz von "Desktop QML Komponenten" - die sind aber bei weitem noch
nicht so stabil und funktional gleichwertig wie die Qt Widgets, vor
allem, wenn es zum Thema "Listen" kommt (was man so auf der Qt
interest mailing list liest).
> ...
> Vielleicht ist es an der Zeit, sich ernsthaft mit QT zu beschäftigen.
> Gibt es empfehlenswerte Literatur für GTK-Umsteiger? Und: Besser QT5
> oder 4? Soll ja einige Unterschiede geben.
Literatur speziell für Umsteiger weiss ich nicht. Hilfreich zu
wissen: Seit Qt 4.6/4.7 gibt es zwei unterschiedliche GUI Paradigmen
in Qt:
- "Declaratives GUI-Design" mit QML + JavaScript
JavaScript kann für die "GUI-Logik" eingesetzt werden - je nachdem,
wie "cool" man JavaScript findet, kann man auch mit QML/JavaScript
eigenständige Applikationen entwickeln - aber grundsätzlich ist man
wohl besser bedient, wenn man die Business-/Programmlogik weiterhin
in C++ entwickelt
http://en.wikipedia.org/wiki/QML
http://qt-project.org/doc/qt-5.1/qtdoc/topics-ui.html#qml-graphical-u
ser-interfaces
- "Traditionelles/imperatives" GUI Design, mit typischen
"Widget-Hierarchien" (parent/child)
http://qt-project.org/doc/qt-5.1/qtwidgets/qtwidgets-index.html
In beiden Fällen gibt es einen GUI Designer - Qt Designer - der auch
im "Widget" Fall sogenannte *.ui (XML) Dateien generiert, welche dann
in reines C++ generiert werden (vom sogenannten uic - User Interface
Compiler). Die QML/JavaScript Dateien werden hingegen immer zur
Laufzeit interpretiert (darum braucht es für QML-Programme auch immer
einen JavaScript Interpreter, der dazugelinkt werden muss).
Die Qt Widgets gibt es weiterhin in Qt 5, sind aber offiziell als
"mature" (sprich: wird nicht mehr weiterentwickelt, nur noch Bug
fixing) gekennzeichnet. In der Tat kann man ein widget basiertes Qt 4
beinahe 1:1 unter Qt 5 kompilieren (anpassen muss man meist bloss ein
paar #include Pfade, wenn überhaupt).
Wenn du von GTK (oder von irgendeinem GUI framework wie Java Swing)
herkommst, wirst du dich wohl in nullkommanix in der Qt Widget Welt
heimisch fühlen: in C++ gibt es dieselben "addWidget/isVisible/show"
Methoden wie anderswo auch. Die Layout-Manager sind in Qt zudem
extrem flexibel und cool, und die i18n Unterstützung ist nirgendwo so
praxisgerecht umgesetzt wie in Qt (das behaupte ich jetzt einfach mal
so ;))
Bei QML hingegen müsstest du dich wohl etwas mehr einarbeiten. Ich
persönlich bevorzuge nach wie vor das "traditionelle GUI Paradigma"
mit hierarchischen Widget-Strukturen, vor allem auf dem Desktop!
QML ist vor allem bei "rich GUI" Anwendungen stark, wo Du "ein
weisses Papier" (Bildschirm) hast und wild draufloszeichnen willst,
und alles bitteschön animiert :) Das mag vor allem in "embedded
Bereich" hilfreich sein.
Aber da ich ohnehin den Qt Designer verwende und im Zweifelsfalle das
super C++ Widget API JavaScript 1000-fach vorziehe, kommt für mich
QML (und vor allem JavaScript!) nicht in Frage. Ich verstehe einfach
nicht, was an dem "deklarativen" so toll sein soll - ich finde es
persönlich nicht sehr attraktiv, "JavaScript/XML"-ähnliche Textfiles
manuell zu bearbeiten. Und Animationen NERVEN ;) (Und die paar
Animationen, die nicht nerven, macht auf Desktops ohnehin der
Desktop-Manager bzw. die bringe ich auch in C++ selber hin.) Aber wie
gesagt, alles meine persönliche Meinung, basierend darauf, dass das
"hierarchische Widget-Paradigma einfach funktioniert - und dies seit
Jahrzehnten.
In beiden Fällen - Qt Widgets und QML - würde ich aber einfach mal
hier anfangen:
http://qt-project.org/doc/qt-5.1/qtdoc/gettingstarted.html
:)
Gruss, Oliver
P.S. Für QML gibt es v.a. für das upcoming Qt 5.2 ebenfalls einen
Satz von "Desktop QML Komponenten" - die sind aber bei weitem noch
nicht so stabil und funktional gleichwertig wie die Qt Widgets, vor
allem, wenn es zum Thema "Listen" kommt (was man so auf der Qt
interest mailing list liest).