Hallo Leute,
ich habe unter QT das Problem, daß diverse Connects nicht funktionieren, oder funktionieren, aber zur Laufzeit kommen Fehlermeldungen es könnte nicht verbunden werden, geht aber trotzdem - ist unheimlich.
Selbstversändlich sind die Signale und Slots dokumentiert und finden sich auch in diesen Auswahllisten, die sich beim Quelltext editieren automatisch öffnen.
Zur Zeit habe ich z.B. das Problem, daß ich gerne zum Signal destroyed eines QDialogs verbunden hätte, das auch klar dokumentiert ist, ich habe dazu im QTCreator auf den Dialog rechtsgeklickt - got to Slot, da ist auch ein Slot für destroyed erzeugt worden, wird aber nie aufgerufen und zur Laufzeit kommt no Matching Signal, obwohl er das selbst gemacht hat.
Was ist die Ursache für diese Probleme?
Ansonsten habe ich in den Signal/Slot-Verbindungs-Editor im QTCreator / Designer noch nie was sehen und editieren können.
Diverse QT-Connects funktionieren nicht
Ich habe mal ein Projekt erzeugt um das mit dem QDialog finished zu demonstrieren, ist angehangen.
Ich habe das finished mit dem QtCreator ui-Editor go to Slot erzeugt.
Ich habe bei anderen Sachen das Problem, daß solche Meldungen auch kommen, die Funktion(SLOT) aber doch aufgerufen wird.
Ich habe das finished mit dem QtCreator ui-Editor go to Slot erzeugt.
Ich habe bei anderen Sachen das Problem, daß solche Meldungen auch kommen, die Funktion(SLOT) aber doch aufgerufen wird.
- Dateianhänge
-
- FinishedTest.zip
- (1.38 KiB) 148-mal heruntergeladen
Ehrlich gesagt verstehe ich das nun überhaupt nicht.
In meinem Ursprungspost sprach ich zwar von destroyed und demonstriert habe ich es mit finished, aber es ist bei beiden und noch viel mehr Messages so.
Die Probleme habe ich sowohl auf nem XP-Laptop als auch ner Linux-Workstation, die von Eclipse, Qt und OpenOffice mal abgeshen nichts miteinander zu tun haben.
Geht das bei anderen?
In meinem Ursprungspost sprach ich zwar von destroyed und demonstriert habe ich es mit finished, aber es ist bei beiden und noch viel mehr Messages so.
Die Probleme habe ich sowohl auf nem XP-Laptop als auch ner Linux-Workstation, die von Eclipse, Qt und OpenOffice mal abgeshen nichts miteinander zu tun haben.
Geht das bei anderen?
-
- Beiträge: 105
- Registriert: 24. Februar 2008 09:45
Hallo!
Ich denke mal dass du die "Auto-Connects" nicht für den Dialog selbst, sondern nur für dessen Child-Objekte verwenden kannst.
In setupUI() wird ja die Methode
aufgerufen die dann die "echten" Connects durchführt. In der Hilfe liest man dazu:
Die Verbindung kannst du aber jederzeit so bewerkstelligen:
HTH
Christian
Ich denke mal dass du die "Auto-Connects" nicht für den Dialog selbst, sondern nur für dessen Child-Objekte verwenden kannst.
In setupUI() wird ja die Methode
Code: Alles auswählen
connectSlotsByName
Ich verstehe dass so, dass wie gesagt, NUR die Child-Objekte auf diese Weise verbunden werden können. Hab testweise eine PushButton in dein Formular eingefügt, und das geht.void QMetaObject::connectSlotsByName ( QObject * object ) [static]
Searches recursively for all child objects of the given object, and connects matching signals from them to slots of object that follow the following form:
...
Die Verbindung kannst du aber jederzeit so bewerkstelligen:
Code: Alles auswählen
connect(this, SIGNAL(finished(int)), this, SLOT(slot_Dialog_finished(int)));
Christian
Ja das hat mir freundlicherweise in qtforum.org schon jemand erklärt.
Das ist dann aber je nach Sichtweise ein Bug im Creator oder Qt, daß ich das Signal im Creator-Designer wählen kann und die Slot-Funktion erzeugt wird, es zur Laufzeit dann aber nicht geht, man muss wohl diese Funktion in der Moc überarbeiten, habe den Feedback-Button im Creator benutzt.
Die anderen Sachen rührten dann daher, daß ich meine händischen Slots auch on_xyz genannt habe, was dazu führt, daß da diese connect-Automatismen im moc drauf anspringen und das geht dann schief, während die händischen connects trotzdem funktionieren.
Das ist dann aber je nach Sichtweise ein Bug im Creator oder Qt, daß ich das Signal im Creator-Designer wählen kann und die Slot-Funktion erzeugt wird, es zur Laufzeit dann aber nicht geht, man muss wohl diese Funktion in der Moc überarbeiten, habe den Feedback-Button im Creator benutzt.
Die anderen Sachen rührten dann daher, daß ich meine händischen Slots auch on_xyz genannt habe, was dazu führt, daß da diese connect-Automatismen im moc drauf anspringen und das geht dann schief, während die händischen connects trotzdem funktionieren.