Kann Qt dazu gebracht werden, Assert, Segfault oder auf andere Weise zum Absturz zu bringen, wenn ein QObject :: connect () fehlschlägt?

8

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?

    
Cory Klein 27.06.2013, 20:47
quelle

2 Antworten

7

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.

    
peppe 27.06.2013, 20:50
quelle
3

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.

    
CmdrMoozy 27.06.2013 20:52
quelle

Tags und Links