Hallo Leute,
ich komme zu meinem Lieblingsthema zurück. ;-) Ich bin bekanntermaßen mit dem Design der Bibliothek etwas unzufrieden und habe mir jetzt einen kleinen C++-Wrapper gestrickt. Da sich hier einige Leute für das Thema interessieren, will ich ihn mal vorstellen. Zuerst das übliche HelloButton-Beispiel:
#include "bollin.h"
#include "boost/bind.hpp"
int main(int argc, char** argv) { using Bollin::Application; Application application(argc, argv);
Bollin::PushButton button("&Quit"); button.onClick = boost::bind(&Application::quit, &application); application.setMainWidget(button); button.show();
return application.execute(); }
Benötigt wird neben meiner "Bollin"-Bibliothek die boost-Bibliothek. Der Quelltext ist fast selbsterklärend. Der Callback-Mechanismus ist reines C++, typsicher und viel flexibler als die QT-Variante. Zur Übersetzung meiner Bibliothek wird weiterhin moc benötigt. Anwender meiner Bibliothek brauchen aber kein moc mehr! Auch gibt es kein seltsames Pointer-Verhalten, alles wird in der Bibliothek gekapselt.
Das 2. Beispiel packt zwei PushButton in eine VerticalBox. Hier sieht man auch die große Flexibilität der Callbacks:
#include "bollin.h"
#include "boost/bind.hpp"
#include <iostream>
namespace {
void printHello() { std::cout << "Hello World!\n"; }
}
int main(int argc, char** argv) { using Bollin::Application; Application application(argc, argv);
Bollin::VerticalBox vbox; application.setMainWidget(vbox);
using Bollin::PushButton; PushButton helloButton("&Hello", vbox); helloButton.onClick = printHello; helloButton.setFocus();
PushButton quitButton("&Quit", vbox); quitButton.onClick = boost::bind(&Application::quit, &application);
vbox.show(); return application.execute(); }
Kommentare?
Torsten