-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi,
On Friday 19 April 2002 20:23, Torsten Werner wrote:
Am Freitag, dem 19. April 2002 um 19:36:35, schrieb Konrad Rosenbaum:
<rumtroll> Warum nicht gleich die MFC nach Linux portieren? </rumtroll>
Mir ist nicht klar, was die Bemerkung mit meiner Nachricht zu tun hat.
button.onClick = boost::bind(&Application::quit, &application);
Der Kommentar war auf "onClick" bezogen, aber Du hast Recht, bei MFC ist das eine Methode, die man ueberschreiben muss.
Anderes Beispiel: MeinDialog *top=new MeinDialog; Bollin::PushButton *button=new Bollin::PushButton(mainwindow); //... button->onClick = boost::bind(&MeinDialog::close, top);
Ich habe trotzdem noch ein Problem damit: der MOC von Qt sorgt dafuer, dass alle Signal-Slot-Verbindungen von top aufgeloest werden, wenn ich das mache:
delete top;
Angenommen top ist eine Statusanzeige in einem eigenen Fenster und button ein Button im Hauptfenster, der die buttonlose Anzeige schliessen soll. Irgendwer koennte noch auf die Idee kommen zu klicken, wenn das Fenster schon zu ist. Ich bin leider nur ein Mensch, also werde ich Fehler der Kategorie "vergessene Code-Zeilen" machen.
Wie loest Du dieses Problem? Ich sehe nicht ganz, wie das funktionieren soll.
Ich bin eigentlich ganz gluecklich, wenn eine Bibliothek mir die ganze Routinearbeit abnimmt.
Problem zwei: was machst Du, wenn mehrere Objekte auf das Click-Ereignis dieses Buttons reagieren sollen? Bei Qt geht das recht einfach:
obj1.connect(button,SIGNAL(click()),SLOT(calcsomething())); obj2.connect(button,SIGNAL(click()),SLOT(showsomething()));
Typsicherheit halte ich bei Qt auch nicht gerade fuer ein Problem: 1. muessen alle Objekte von QObject abgeleitet sein, damit die Qt-Mechanismen funktionieren, ist diese Bedingung erfuellt funktioniert alles ohne Probleme. Ist sie nicht erfuellt beschwert sich der Compiler. 2. bekommt man schon beim Initialisieren der Objekte (sprich beim connect) mit, ob das Signal/der Slot existiert (via Debug-Meldung). Wer ein Programm nicht so weit testet, dass jede Code-Stelle mindestens einmal angefahren wurde, sollte sich ueberlegen warum er so viele Bug-Reports bekommt... 3. die semantischen Fehler, die jetzt noch uebrig sind wirst Du auch mit staerkerer Typpruefung nicht finden.
Konrad
- -- BOFH excuse #114:
electro-magnetic pulses from French above ground nuke testing.