Как установить кодировку символов для QTextBrowser в Qt?

У меня есть QTextBrowser, в котором я отображаю содержимое вывода внешнего двоичного файла, используя QProcess в Linux. Все хорошо! Но большая часть содержимого - это просто коробки, так что теперь кодировка символов UTF-8 отсутствует, и мне нужно сообщить об этом QTextBrowser. Есть ли способ для этого?

Код:

....
processRAM = new QProcess();
processRAM->start("memtester", QStringList() << "1" << "1");
.....
connect(processRAM, SIGNAL(readyRead()),this,SLOT(displayRAMTestOutput()));
......
void MainWindow::displayRAMTestOutput()
{
  textBrowserData->append(Qtring::fromUtf8(processRAM->readAllStandardOutput())));
}  

Я добавил кодировку символов UTF-8 и все равно вижу только коробки. Что мне здесь не хватает?


person Xavier Geoffrey    schedule 15.04.2015    source источник


Ответы (1)


Вы можете установить содержимое QTextBrowser таким образом:

textBrowser->setText(QString::fromUtf8(processOutput)));

РЕДАКТИРОВАТЬ: Ваша проблема с «коробками» не связана с кодировкой UTF8. Символы, которые вы видите, являются управляющими символами, которые используются memtester при выводе текста на консоль. Если вы не хотите отображать такие символы в textBrowser, вы можете отфильтровать вывод:

while(!processRAM->atEnd())
{
    QString out = QString::fromAscii(processRAM->readLine());
    if(!out.contains("\b"))
        textBrowser->append(out);}
}

\b означает возврат, который отображается в вашем текстовом браузере в виде полей.

person trivelt    schedule 15.04.2015
comment
Спасибо. Я пытался, но не повезло. Я отредактировал свой вопрос. Подскажите, пожалуйста, что там делать? - person Xavier Geoffrey; 15.04.2015
comment
Вместо того, чтобы зацикливаться, я могу сделать это так же, как сейчас, верно? Кроме того, мне пришлось использовать fromLatin1 вместо fromAscii для Qt5, и все равно не повезло :( все равно печатает эти коробки - person Xavier Geoffrey; 15.04.2015
comment
Извините, это моя ошибка - вам не нужно использовать fromLatin1 или fromAscii. Способ, которым вы фильтруете полученный вывод QString, зависит от вас, я только указал, что ваши поля - это символы возврата, и удалить их просто. - person trivelt; 15.04.2015
comment
Спасибо за вашу помощь :) Это решило проблему :) Новое обучение :) спасибо :) - person Xavier Geoffrey; 15.04.2015