[Metalab] Qt

Thomas Perl thp at thpinfo.com
Tue Feb 22 23:08:27 CET 2011


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





More information about the Metalab mailing list