Saltar al contenido

Cómo imprimir en la consola cuando se usa Qt

Solución:

Si es lo suficientemente bueno para imprimir en stderr, puede utilizar las siguientes secuencias destinadas originalmente a la depuración:

#include<QDebug>

//qInfo is qt5.5+ only.
qInfo() << "C++ Style Info Message";
qInfo( "C Style Info Message" );

qDebug() << "C++ Style Debug Message";
qDebug( "C Style Debug Message" );

qWarning() << "C++ Style Warning Message";
qWarning( "C Style Warning Message" );

qCritical() << "C++ Style Critical Error Message";
qCritical( "C Style Critical Error Message" );

// qFatal does not have a C++ style method.
qFatal( "C Style Fatal Error Message" );

Aunque, como se señaló en los comentarios, tenga en cuenta que los mensajes qDebug se eliminan si QT_NO_DEBUG_OUTPUT se define

Si necesita stdout, puede probar algo como esto (como ha señalado Kyle Strand):

QTextStream& qStdOut()
{
    static QTextStream ts( stdout );
    return ts;
}

A continuación, puede llamar de la siguiente manera:

qStdOut() << "std out!";

Encontré esto de lo más útil:

#include <QTextStream>

QTextStream out(stdout);
foreach(QString x, strings)
    out << x << endl;

Escribiendo a stdout

Si quieres algo que, como std::cout, escribe en la salida estándar de su aplicación, simplemente puede hacer lo siguiente (crédito a CapelliC):

QTextStream(stdout) << "string to print" << endl;

Si quiere evitar crear un temporal QTextStream objeto, siga la sugerencia de Yakk en los comentarios a continuación de crear una función para devolver un static manejar para stdout:

inline QTextStream& qStdout()
{
    static QTextStream r{stdout};
    return r;
}

...

foreach(QString x, strings)
    qStdout() << x << endl;

Recordar para flush la secuencia periódicamente para garantizar que la salida se imprima realmente.

Escribiendo a stderr

Tenga en cuenta que la técnica anterior también se puede utilizar para otras salidas. Sin embargo, hay formas más legibles de escribir en stderr (crédito a Goz y los comentarios debajo de su respuesta):

qDebug() << "Debug Message";    // CAN BE REMOVED AT COMPILE TIME!
qWarning() << "Warning Message";
qCritical() << "Critical Error Message";
qFatal("Fatal Error Message");  // WILL KILL THE PROGRAM!

qDebug() está cerrado si QT_NO_DEBUG_OUTPUT está activado en tiempo de compilación.

(Goz señala en un comentario que para las aplicaciones que no son de consola, estas pueden imprimirse en una secuencia diferente a la stderr.)


NOTA: Todos los métodos de impresión Qt asumen que const char* los argumentos son cadenas codificadas ISO-8859-1 con terminación caracteres.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *