2013-06-27 7 views
8

Ich benutze Qt 4.8.x, also habe ich keinen Zugriff auf die neue connect-Schnittstelle von Qt5, aber ich möchte besser gewarnt werden, wenn eine Signal/Slot-Verbindung fehlschlägt, weil ich einen Signal- oder Slot-Namen falsch geschrieben habe.Können Sie veranlassen, dass Qt Assert, Segfault oder auf andere Weise abstürzt, wenn ein QObject :: connect() fehlschlägt?

Momentan spuckt alle Qt eine Fehlermeldung aus, wenn die Verbindung versucht wird. Allerdings hat mein Programm viele 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?

Antwort

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, um hinzuzufügen: Sie können natürlich auch einige Wrapper für QObject :: connect implementieren, die ihren Rückgabewert überprüfen und assert(), wenn sie false zurückgibt.

+1

Können Sie genauer darüber sein, wie dies zu tun ist? –

+0

Ich werde genauer in meiner Frage sein. Ist das eine Betriebssystemumgebungsvariable? Oder ist es etwas, das Sie in der '.pro' Datei einstellen? Wie setzen Sie die Umgebungsvariable 'QT_FATAL_WARNINGS' auf einen Wert ungleich Null? –

+0

Es ist eine Betriebssystemumgebungsvariable; Wie Sie es einstellen, hängt von Ihrem OS/IDE ab. Wenn Sie Creator verwenden, können Sie zusätzliche Umgebungsvariablen im Projektbereich unter den Ausführungseinstellungen festlegen. Unter Linux/Unix mit einer sh-artigen Shell können Sie 'QT_FATAL_WARNINGS = 1./YourApp' oder' setenv QT_FATAL_WARNINGS = 1' ausführen, um es dauerhaft in dieser Shell zu setzen. Unter Windows befindet es sich irgendwo in der Systemsteuerung -> System. – peppe