Ich habe heute wieder einmal ein Wenig mit Qt4 gespielt, diesmal jedoch nicht mehr mit C++, sondern Ruby. Die Voraussetzungen dazu beschränken sich auf die zu installierende Bibliothek libqt4-ruby und natürlich die Qt4 API-Referenz. Fazit: Sehr cool, die Eleganz von Ruby gepaart mit der mächtigen Qt-Bibliothek macht richtig Lust auf schöne Multiplatform-Desktop-Applikationen.
Die von QtRuby (libqt4-ruby
) zur Verfügung gestellten Qt-Bindings orientieren sich zu sagen wir mal 98% an den Original-APIs, mit der Ausnahme dass das "Q" in denn C++-Klasssennamen durch ein "Qt::"-Prefix ersetz wurde. Was ich allerdings als weniger hübsch empfinde, ist die konsequente Weiterverwendung von camelCase
auch bei Methodennamen -- es steht keine Rubyesquere under_score
-Variante zur Verfügung.
Anders sieht das aus bei den Qt-/KDE-Ruby-Bindings in der Korundum-Bibliothek. korundum4
ist eine m.E. etwas weiter fortgeschrittene Qt-Schnittstelle für Ruby, die zusätzlich die umfangreichen KDE-Erweiterungen der Qt-Bibliotheken zur Verfügung stellt. Außerdem wird Camelcase und Underscore-Schreibweise bei allen Methodennamen gleichermaßen unterstützt und "Setter" werden wie gewohnt über "value = " (und zusätzlich über "setValue()") angeboten.
Während QtRuby konsequent auf Ruby-Datentypen setzt, verwendet Korundum (noch) eigene Wrapper-Datentypen an Stellen, wo die C++ API einen Pointer erwartet. So würde ein Aufruf von Qt::FontDialog.getFont(my_boolean, Qt::Font.new("Helvetica", 10), self)
in Korundum so aussehen: Qt::FontDialog.getFont(Qt::Boolean.new, Qt::Font.new("Helvetica", 10), self)
. Dies soll sich laut Dokumentation aber in Zukunft ändern. Bis auf diese Dinge lassen sich Programme, die für QtRuby geschrieben wurden, auch mit Korundum weitestgehend ohne Änderungen auch mit Korundum betreiben.
Ein paar hilfreiche HowTos:
- Einführung mit QtRuby: http://developer.kde.org/language-bindings/ruby/tutorial/tutorial.html
- Eigene Widgets mit QtRuby oder Korundum: http://usefulfor.com/ruby/2007/06/04/ruby-qt-custom-widget-example/
- Qt-Anwendungen mit Ruby und .ui- (Qt Designer-) Dateien: http://www.arachnoid.com/ruby/RubyGUIProject/index.html
Happy Hacking!