PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : KDevelop: automatisches temp. Erstellen des Headers aus ui klappt nicht



stefan-tiger
24-03-2006, 20:29
Hallo,

normalerweise sollte es ja so sein, daß ich bei KDevelop meine Oberfläche mit KDevDesigner mache. Hab ich also gemacht.

Danach wollte ich ein C++ Projekt in KDevelop aufmachen. Wie immer muss man einiges von Hand korrieren wenn man eine vorhandene ui in ein neues Kdevelop-Projekt einbinden will (warum eigentlich?).

Nun sollte das ganze ja so funktionieren, daß der uic zur kompilierzeit temporär aus dem ui file ein Header erzeugt. In einem anderen Header ist eine Klasse die von der Klasse dieses Headers abgeleitet ist.

Im Grunde sollte man nur bei der Implementierung einfach die Slots überschreiben. Klappt irgendwie nicht.

Immer kommt die Meldung wenn ich wie Funktion start() implementieren will, daß diese nicht im Header ist. Stimmt auch. Sie ist nämlich nur als Slot in der ui Datei vorhanden.

Wo ist der Wurm?

stefan-tiger
25-03-2006, 07:31
Ich hab gemerkt, daß man wohl doch die Prototypen der Funktionen die man überschreiben will in der Abgeleiteten Klasse angeben muss.

Sollte das durch die vererbung nicht anders sein?

stefan-tiger
25-03-2006, 09:08
Nochmal anders ausgedrückt:
in der Abgeleiteten Klasse steht folgendes:

public slots:
/*$PUBLIC_SLOTS$*/

Es sollte beim Kompilieren das /*$PUBLIC_SLOTS$*/ durch das ersetzt werden, was herauskommt wenn man mit dem uic aus der .ui Datei die Prototypen bekommt.
Das passiert aber bei mir nicht.

Beispiel:

Ich habe einen Button #in der .ui und eine Slot "test()" in der Form. Der Button ist damit verknüpft.
Wenn ich jetzt "test()"implementieren will, dann muss ich erstmal in der abgeleiteten Klasse den Prototyp dafür reinschreiben. Das sollte eigentlich überflüssig sein.

Das nächste ist wenn ich in der .ui Datei (mit dem Designer) den Slot von "test()" auf "start()" umbennenne, dann muss ich an folgenden Stellen manuell nacharbeiten:

- Connections
- Prototyp in der abgeleiteten Klasse
- Implementierung der abgeleiteten Klasse

Dies ist ebenso unnötig. Warum wird an diesen Orten nicht automatisch verfahren?

anda_skoa
28-03-2006, 13:52
Keine Ahnung, könnte ein Bug in KDevDesigner oder KDevelop sein.

Wenn man es ohne IDE macht muß man logischerweise selbe die Slot Deklarationen in die abgeleitete Klasse schreiben, aber wenn bei einem der beiden Programme vorgesehen ist, daß er es automatisch macht, dann liegt vermutlich in dieser Applikation ein Fehler vor.

Ciao,
_