【问题标题】:How to set character encoding for QTextBrowser in Qt?如何在 Qt 中为 QTextBrowser 设置字符编码?
【发布时间】:2015-06-20 21:50:12
【问题描述】:

我有一个QTextBrowser,在其中我使用Linux 中的QProcess 显示外部二进制文件的输出内容。一切都很好!但是大部分内容只是盒子,所以现在缺少 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,但我仍然只看到框。我在这里错过了什么?

【问题讨论】:

    标签: qt qtextbrowser


    【解决方案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 表示退格,在你的 textBrowser 中显示为框。

    【讨论】:

    • 谢谢。我试过但没有运气。我已经编辑了我的问题。你能告诉我在那里做什么吗?
    • 我可以像现在一样拥有它,而不是循环循环,对吗?另外,我不得不在 Qt5 中使用 fromLatin1 而不是 fromAscii,但仍然没有运气:( 它仍然在打印那些框
    • 对不起,这是我的错 - 你不需要使用 fromLatin1fromAscii。过滤接收到的输出QString 的方式是您的选择,我只指出您的“框”是退格字符,删除它们很简单。
    • 感谢您的帮助 :) 它解决了问题 :) 新学习 :) 谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2017-09-22
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多