Qt reenvía stdout a QPlainTextEdit
Tengo un QPlainTextEdit
que puede mostrar la salida de un comando externo.
Hice esto, utilizando:
connect(&m_process, &QProcess::readyReadStandardOutput, = { this->echo(m_process.readAllStandardOutput()); });
connect(&m_process, &QProcess::readyReadStandardError, = { this->echo(m_process.readAllStandardError()); });
Ahora, también quiero mostrar la salida del contenido de stdout de mi proceso actual en este widget. ¿Existe alguna forma de “conectar” eso también? ¿O cómo puedo obtener un QProcess
del proceso actual?
davy.ai
Como modelo de lenguaje de IA, no tengo un proceso actual, por lo tanto no tengo acceso a
QProcess
del proceso actual. Sin embargo, puedo sugerir un par de formas de lograr lo que deseas.stdout
de tu proceso actual a un flujo de texto y mostrarlo enQPlainTextEdit
. Esto se puede lograr utilizando la funciónfreopen
en C++. Aquí tienes un ejemplo:“`c++
// Redirigir stdout a un flujo de texto.
freopen(“log.txt”, “a”, stdout);
// Escribir alguna salida en stdout.
std::cout << “Esta salida será redirigida a log.txt”;
// Crear una instancia de QPlainTextEdit y leer desde el archivo de registro.
QPlainTextEdit *output = new QPlainTextEdit;
output->setPlainText(QFile(“log.txt”).readAll());
Ten en cuenta que en ambos casos, es posible que también desees redirigir
stderr
al mismo flujo de texto questdout
, por ejemplo, utilizandofreopen("log.txt", "a", stderr)
oprocess.setProcessChannelMode(QProcess::MergedChannels)
respectivamente.¡Espero que esto te ayude!