[gelöst] Slots im Qt 4 Designer
-
Danzl Gerhard
- Beiträge: 1
- Registriert: 7. Juli 2005 08:24
[gelöst] Slots im Qt 4 Designer
Hallo!
Ich finde keine Möglichkeit im Signal/Slot Editor vom Qt4 Designer win eigene Slots zu definieren.
Danke Gerhard
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
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.Danzl Gerhard hat geschrieben:Ich finde keine Möglichkeit im Signal/Slot Editor vom Qt4 Designer win eigene Slots zu definieren.
-
ArneStocker
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
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 nichtDie gibt es auch nicht mehr
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 ?
@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.
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.
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:heisst das ich muss alle meine Widgets, für die ich Slots im Designer erstellt habe, nachbauen ?
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 anzusprechenArneStocker hat geschrieben:aber im Hinblick auf bestehenden Code finde ich den Gedanken an eine Umstellung doch etwas gruselig.
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 ?
Genau, und in den Konstruktor packe ich die connect(...) Zeilen, die vorher in der von uic generierten Datei waren.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.
Hast Du sie auch in der Headerdatei von private: nach private slots: verschoben? Ein Fehler den ich gerne machte.cbrider hat geschrieben:Hab das auch mit "on_widgetname_signal" versucht und hat leider nicht gefunzt diese in der Implementierungsklasse anzusprechen.
-
ArneStocker
- Beiträge: 300
- Registriert: 3. November 2004 16:15
- Wohnort: Berlin
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.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 hoffe sie haben wenigstens die Möglichkeit beibehalten, Menüs einen Parameter mitzugeben.Z.B. gibt es wohl keine Möglichkeit mehr Menüs mit einem Index zu versehen und über den anzusprechen
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
Oft geht es gar nicht anders, vor allem wenn man dynamisch TabPanels erstellt.ArneStocker hat geschrieben:Ich habe manchesmal direkt connect verwendet (da bin ich mit mir im reinen)
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: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.
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.ArneStocker hat geschrieben:Ich hoffe sie haben wenigstens die Möglichkeit beibehalten, Menüs einen Parameter mitzugeben.
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"
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"
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.cbrider hat geschrieben:aber sagt doch mal ehrlich, den Qt-Designer hätte man doch so lassen können wie er war.
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