Ich verwende Qt 4.8.x, so dass ich von Qt5 keinen Zugriff auf die neue connect
-Schnittstelle habe, aber ich möchte besser gewarnt werden, wenn eine Signal / Slot-Verbindung fehlschlägt, weil ich einen Signal- oder Slot-Namen falsch geschrieben habe .
Momentan spuckt alle Qt eine Fehlermeldung aus, wenn die Verbindung versucht wird. Allerdings hat mein Programm eine Menge Ausgaben auf stdout
, so dass es leicht ist, diese Fehler manchmal zu übersehen. Ist es möglich, dass meine Anwendung durch eine assert-, segfault- oder andere Methode zum Absturz gebracht wird, wenn eine connect-Anweisung fehlschlägt?
Ja: Setzen Sie die Umgebungsvariable QT_FATAL_WARNINGS
auf einen Wert ungleich Null.
Sie können dies während der Entwicklung in Qt Creator tun, indem Sie im Bereich Projekte auf Ausführen klicken, dann unter "Umgebung ausführen" auf Details klicken und dann auf Hinzufügen klicken.
Bearbeiten zum Hinzufügen : Sie können natürlich auch einige Wrapper für QObject :: connect implementieren, die ihren Rückgabewert und assert () überprüfen, wenn sie false zurückgibt.
Ich denke mindestens eine der Lösungen in dieser Frage: Qt GUI-App : Warnung, wenn QObject :: connect () fehlgeschlagen ist? tut, was Sie brauchen.
Insbesondere, indem Sie QErrorMessage::qtHandler
verwenden, sollten Sie in der Lage sein, diese Warnungen abzufangen und mit ihnen alles zu tun, was Sie wollen.
Tags und Links c++ qt signals-slots