Important: Please read the Qt Code of Conduct -

How do I stop QT writing to console?

  • I start my QT application (on Linux, from the command line), and interact with it. Every so often, it dumps a string to the command line; usually a whinge about how a slot doesn't exist so a signal can't be connected, or maybe QTextCursor::setPosition: Position '-1' out of range or some other such.

    I find lots of information about how I can get QT to output this sort of thing; how can I stop it polluting the console?

  • Is simple redirection on the command line a solution ?

    command >/dev/null 2>&1

    But then it is totally silent

  • The intention is that the user should not under ordinary circumstances have messages presented in the console, so silent is fine.

    I'd rather not have to do some command-line fu to get this right; the current requirement is that the user should be able to start the application with no more than typing the name of the application at the command line, so a fix that requires them to do more is off the table at the moment.

  • In the Code you may achieve the same effect with

    int fd = ::open("/dev/null/",O_WRONLY,0744 );

    A simpler solution ould be to simply wrte a bash frontend like
    /bin/application which does


    /bin/application-bin >/dev/null 2>&1

  • You can change where Qt prints out debug messages, warnings, critical and fatal error messages by installing a new message handler.

    See the documentation :

    For example, you can choose to redirect them in a log file.

Log in to reply