pronounciation reminder: Qt ... Cutie KDE ... Kiddie lg, mih PS. LaTeX ... layman's tex ... 'Lay Tech' :) 2011/2/22 Thomas Perl <thp@thpinfo.com>:
Hi,
(nitpick: bei Qt ist das "t" klein; QT = Quicktime)
On Tue, Feb 22, 2011 at 08:47:28PM +0100, Georg Lippitsch wrote:
Am 22.02.2011 19:56, schrieb Berni _:
Mich plagt: die Unterschiede zw. Dialogen und Fenster (und Widgets) zu
In QT sind alle GUI-Element von QWidget abgeleitet, d.h. jedes Fenster und jeder Dialog, aber auch Knöpfe, Lables, und alles andere sind prinzipiell mal auch QWidgets. Ein QDialog bietet im Gegensatz zu anderen Fensterarten die Möglichkeit, dass die Funktion, welche man zum Anzeigen aufruft, so lange blockt, bis man den Dialog wegklickt. Ist sinnvoll wenn man z.B. irgend eine Ja/Nein-Abfrage machen will, weil man einfach nur auf das Return von QDialog.exec() warten muss, und nicht einen EventHandler schreiben.
Das Hauptfenster einer Applikation sollte normalerweise ein QMainWindow sein. Für alle anderen Fenster, die nicht QMainWindow sind und auch nicht während der Anzeige blocken sollen, kann man direkt QWidget verwenden.
Es gibt da auch noch QML/Qt Quick. Damit kann man in einer JavaScript-ähnlichen, deklarativen Sprache die UI definieren. Ist für Touch-UIs interessant (aber nicht nur). Eine QML-View "lädt" man in ein QDeclarativeView (und die ist von QWidget abgeleitet). QML gibt's ab Qt 4.7. Man kann dann viele UI-Sachen direkt in JavaScript lösen, wenn man mag (und meistens mag man). Und wenn die Zielplattform OpenGL (ES) kann, lässt sich das (im Gegensatz zu QWidget-basierten UIs) auch gleich mal per Zweizeiler hardwarebeschleunigen; sogar GL-Shader lassen sich zukünftig einbauen, wenn man lustig ist[1].
Kommunikation zwischen C++ Backend und QML UI erfolgt dann über Properties, Signals und Slots, und das Trennen von UI und Backend-Code funktioniert mit diesem Ansatz sehr schön (man wird bissl dazu gezwungen).
Ist QT ein weiser Schritt? Das gehört ja zu Nokia.
Das ist natürlich immer eine Philosophie-Frage. Ich persönlich finde QT so ziemlich das beste universelle Frameworks überhaupt, man kann richtig viel damit machen, es ist clever designed und läuft auf verschiedenen Plattformen. Lizenz ist LGPL, d.h. es handelt sich um echte freie Software. Da "stört" auch Nokia nicht, für den Fall das die mal blöd werden wird es sicher von der Community weiter gepflegt.
Qt gibt's unter 3 Lizenzen, das geht ungefähr so (IANAL):
* Kommerzielle Lizenz (grob gesagt: du musst Änderungen an Qt nicht teilen, und darfst statisch linken, ohne selbst (L)GPL sein zu müssen) * LGPL (du darfst deine closed source Anwendung dynamisch gegen Qt linken, musst Änderungen an Qt selbst aber unter die LGPL stellen) * GPL (nur wenn dein Programm auch unter die GPL fällt)
Meistens trifft aber eh die LGPL zu, außer du willst dein closed source Programm statisch gegen Qt linken (zB wenn du auf Windows abzielst, und nur "eine kleine exe" ausliefern willst anstatt exe + die großen Qt DLLs).
Wenn du mal im Lab wärst Georg, dann könnte ich dir zeigen was ich bis jetzt gemacht habe. Zeitvorgaben für mein Projekt habe ich, muss aber nicht die Woche sein.
Bin voraussichtlich am Freitag da, nach Clifford's Kurs kömma mal schauen. Sonst müss ma was ausmachen, vorzugsweise Wochenende ....
Wenn QML/Qt Quick in Frage kommt, kann ich dir da auch gerne was zeigen.
lg thp
[1] http://youtu.be/VMz5Z_vdDSA
_______________________________________________ Metalab mailing list Metalab@lists.metalab.at http://lists.metalab.at/mailman/listinfo/metalab