Seite 1 von 1
[gelöst] Slots im Qt 4 Designer
Verfasst: 7. Juli 2005 08:35
von Danzl Gerhard
Hallo!
Ich finde keine Möglichkeit im Signal/Slot Editor vom Qt4 Designer win eigene Slots zu definieren.
Danke Gerhard
Re: Slots im Qt 4 Win Designer
Verfasst: 7. Juli 2005 10:13
von macman
Danzl Gerhard hat geschrieben:Ich finde keine Möglichkeit im Signal/Slot Editor vom Qt4 Designer win eigene Slots zu definieren.
Die gibt es auch nicht mehr. Ich erstelle sie von Hand im Konstruktor, gleich nach setupUi(). Du kannst deine Slots aber auch nach der Namenskonvention on_widgetname_signal benennen, dann werden die Connections automatisch angelegt.
Verfasst: 7. Juli 2005 20:16
von ArneStocker
Die gibt es auch nicht mehr
heisst das ich muss alle meine Widgets, für die ich Slots im Designer erstellt habe, nachbauen ? Da kommt 'ne Menge Fleissarbeit zusammen. Bei mir heissen die Slots nämlich nicht
on_widgetname_signal.
sondern meistens OnWidgetnameSignal
und auch das eben nur meistens.
Ich habe mir Qt4.0 noch nicht gezogen (nur ein bisschen die Vorschau angesehen) und weiss nicht, wie da was funktioniert, aber im Hinblick auf bestehenden Code finde ich den Gedanken an eine Umstellung doch etwas gruselig.
Gruss Arne
Und wie läuft das nun genau ?
Verfasst: 8. Juli 2005 00:57
von cbrider
@macman
In welchem Konstruktor erstellst du die denn ?
MSVC 6.0 erzeugt ja für jeden ui-Dialog eine Implementierungklasse. In dieser wurden ja bisher die im Qt-Designer erstellten Slots virtuell überladen.
Hab das auch mit "on_widgetname_signal" versucht und hat leider nicht gefunzt diese in der Implementierungsklasse anzusprechen.
Verfasst: 8. Juli 2005 07:31
von macman
ArneStocker hat geschrieben:heisst das ich muss alle meine Widgets, für die ich Slots im Designer erstellt habe, nachbauen ?
Deswegen mußt Du keine Widgets nachbauen. Ich habe einfach die connect(..) Zeilen aus dem alten Qt3 Quellcode, welche von uic erstellt wurden, kopiert und in den Konstruktor der Implementierungsklasse kopiert. Wichtig ist nur das man die Slots auch als Slots deklariert, was vorher ja nicht nötig war, da das nur überschriebene Methoden waren.
ArneStocker hat geschrieben:aber im Hinblick auf bestehenden Code finde ich den Gedanken an eine Umstellung doch etwas gruselig.
Ist es auch. Ich weiß heute noch nicht wie ich manche Sachen anstellen soll. Ich habe das Gefühl das die Trolls ein paar Sachen einfach vergessen haben. Z.B. gibt es wohl keine Möglichkeit mehr Menüs mit einem Index zu versehen und über den anzusprechen
Wenn man sich dann noch anschaut was sich die Trolls für die 4.0.1 vorgenommen haben, dann dauert das wohl noch ein bißchen. Guckst Du
hier
Re: Und wie läuft das nun genau ?
Verfasst: 8. Juli 2005 07:35
von macman
cbrider hat geschrieben:MSVC 6.0 erzeugt ja für jeden ui-Dialog eine Implementierungklasse. In dieser wurden ja bisher die im Qt-Designer erstellten Slots virtuell überladen.
Genau, und in den Konstruktor packe ich die connect(...) Zeilen, die vorher in der von uic generierten Datei waren.
cbrider hat geschrieben:Hab das auch mit "on_widgetname_signal" versucht und hat leider nicht gefunzt diese in der Implementierungsklasse anzusprechen.
Hast Du sie auch in der Headerdatei von private: nach private slots: verschoben? Ein Fehler den ich gerne machte.
Verfasst: 8. Juli 2005 08:42
von ArneStocker
Ich habe einfach die connect(..) Zeilen aus dem alten Qt3 Quellcode, welche von uic erstellt wurden, kopiert und in den Konstruktor der Implementierungsklasse kopiert.
Ich habe manchesmal direkt connect verwendet (da bin ich mit mir im reinen) und manches mal (frag jetzt nicht warum) den Designer verwendt und die Methode abgeleitet. Da es aber eine Menge Dialog sind bleibt es fleissarbeit und dann muss man ja auch nochmal die ganze Applikation durchprüfen, ob nicht doch irgend ein Slot nicht funktioniert. Das mit dem Kopieren aus der Basisklasse ist eine gute Idee, da kann man sich vor allem nicht bei den Signals oder Slots vertippen (was einem der Compiler erst mal nicht meldet). Und mit Debug infos werde ich immer so zugeballert, dass ich keine Lust habe die Warnings da rauszusuchen.
Z.B. gibt es wohl keine Möglichkeit mehr Menüs mit einem Index zu versehen und über den anzusprechen

Ich hoffe sie haben wenigstens die Möglichkeit beibehalten, Menüs einen Parameter mitzugeben.
Was mir (beim lesen) aufgefallen ist, ist die vollständige Änderung der Sichten mit QListView (nicht mehr einfach ein QListViewItem reinwerfen). Das ist zwar ganz praktisch, führt jedoch bei Änderungen zu einer Menge arbeit. Allerdings werde ich da nicht so viel Arbeit haben, weil ich mir vorher eine Controlklasse gebaut hatte, in die ich einfach meine Objekte reingeschmissen habe.
Gruss Arne
Verfasst: 8. Juli 2005 09:47
von macman
ArneStocker hat geschrieben:Ich habe manchesmal direkt connect verwendet (da bin ich mit mir im reinen)
Oft geht es gar nicht anders, vor allem wenn man dynamisch TabPanels erstellt.
ArneStocker hat geschrieben:Da es aber eine Menge Dialog sind bleibt es fleissarbeit und dann muss man ja auch nochmal die ganze Applikation durchprüfen, ob nicht doch irgend ein Slot nicht funktioniert.
Richtig, und wenn Du mal anfängst den Qt3-Wrapper weg zu lassen, um die einzelnen Befehle anzupassen, dann wird es erst richtig lustig. Es läßt sich zwar viel mit Search&Replace erledigen, aber für einiges gibt es einfach kein Equivalent. Das muß komplett anders programmiert werden, wie eben die Model/View Geschichte. Da gehe ich aber nur bei, wenn ich mal nichts anderes zu tun habe.
ArneStocker hat geschrieben:Ich hoffe sie haben wenigstens die Möglichkeit beibehalten, Menüs einen Parameter mitzugeben.
Nö, sieht nicht so aus. Menüs setzen sich jetzt aus QActions zusammen, auch ein Punkt der komplett anders ist. Ich habe noch keine Möglichkeit gefunden an den Pointer für ein QAction zu kommen, wenn das Menü nicht aktiv ist. Werde mal den Support fragen und wenn es nicht geht, ist das ein Punkt für einen
weiteren Verbesserungsvorschlag.
Verfasst: 12. Juli 2005 00:21
von cbrider
Danke für eure Hilfen,
aber sagt doch mal ehrlich, den Qt-Designer hätte man doch so lassen können wie er war. OK die Verwendung der *.ui.h Dateien war schon ein bisschen wirsch aber man konnte sich dran gewöhnen.
Die Neuerungen innerhalb der Klassen und der Klassenstruktur sind ja genial, aber wie gesagt: "Ich vermisse meinen QtDesigner3"

Verfasst: 12. Juli 2005 07:16
von macman
cbrider hat geschrieben:aber sagt doch mal ehrlich, den Qt-Designer hätte man doch so lassen können wie er war.
Also der neue hat schon seine Vorteile, das nachträgliche einfügen in Layouts, das herstellen von Standardconnections, und die bessere Integration in VS.Net. Wenn das in KDevelop ähnlich gelöst ist, dann sehe ich das als Vorteil. Allerdings verwundert mich die unterschiedliche Darstellung meiner Dialoge zwischen Standalone Designer und der integrierten Version.
Es gibt aber auch einiges was ich vermisse, das erstellen von eigenen Slots und das benamen von Layouts und Spacern, z.B. Von den Menüs und Fenstern red ich erst gar nicht

Ich sehe es als Potential für Verbesserungen, die sicherlich noch kommen werden. Man schaue nur auf den Tasktracker, was da alles für die 4.0.1 geplant ist.