2013-06-27 4 views
8

Sto utilizzando Qt 4.8.x, quindi non ho accesso alla nuova interfaccia connect da Qt5, ma voglio essere avvisato meglio quando una connessione segnale/slot non funziona perché ho sbagliato a digitare il nome di un segnale o di uno slot.Si può causare Qt per asserire, segfault o in caso contrario crash quando un QObject :: connect() ha esito negativo?

Attualmente, tutto il Qt fa è sputare fuori un messaggio di errore quando si tenta la connessione. Tuttavia, il mio programma ha un sacco di output su stdout quindi è facile perdere questi errori a volte. È possibile forzare la mia applicazione a bloccarsi tramite assert, segfault o altri metodi, quando un'istruzione di connessione fallisce?

risposta

7

Sì: impostare la variabile di ambiente QT_FATAL_WARNINGS su un valore diverso da zero.

È possibile eseguire questa operazione durante lo sviluppo in Qt Creator andando al riquadro Progetti, fare clic su Esegui, quindi in "Esegui ambiente" fare clic su Dettagli, quindi fare clic su Aggiungi.

Modifica per aggiungere: è possibile anche implementare alcuni wrapper per QObject :: connect, che controllerà il valore restituito e asserisce() se restituisce false.

+1

Puoi essere più specifico su come farlo? –

+0

Sarò più specifico nella mia domanda. Questa è una variabile di ambiente del SO? O è qualcosa che hai impostato nel file '.pro'? Come si imposta la variabile di ambiente 'QT_FATAL_WARNINGS' su un valore diverso da zero? –

+0

È una variabile di ambiente del sistema operativo; come impostarlo dipende dal tuo OS/IDE. Quando si utilizza Creator, è possibile impostare variabili di ambiente aggiuntive nel riquadro Progetto, sotto le impostazioni Esegui. Sotto Linux/Unix con una shell 'sh'-like, puoi eseguire' QT_FATAL_WARNINGS = 1./YourApp' o 'setenv QT_FATAL_WARNINGS = 1' per impostarlo permanentemente in quella shell. Sotto Windows è da qualche parte nel Pannello di controllo -> Sistema. – peppe