Как захватить поток процесса вместе с кодировкой ANSI в Qt C ++ - PullRequest
1 голос
/ 14 апреля 2020

Я пытаюсь сделать терминал в форме, я смог реализовать и запустить процессы, которые отображают их выполнение в текстовом поле на форме. небольшая часть кода:

void Process::readResult(){
    emit lineRead(process->readAllStandardOutput());
    emit lineRead(process->readAllStandardError());

}

void Process::writeQString(QString str) {
    if (process->state() == QProcess::ProcessState::Running)
        process->write(str.toUtf8());
}

дисплей:

void MainWindow::getProcessLine(QByteArray output)

    {

        QTextCodec *codec = QTextCodec::codecForName("cp-866");
        QString pStr = codec->toUnicode(output.data());
        ui->plainTextEdit->appendPlainText(pStr.trimmed());
    }

Соответственно, если я использую команды, которые используют кодировку ANSI для результата, я получаю все эти символы кодирования, смешанные с основной текст в текстовом поле.

[33m Device #1: Not a native Intel runtime..[0m [33m You can use but do not report related errors.[0m Started: Tue [2K Stopped: Tue [31mNo devices found/left.[0m

символов, таких как: [0m [33m и т. д. Подскажите пожалуйста, как исключить эти символы из вывода? Или можно отобразить вывод с этой кодировкой в ​​текстовом поле? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...