QTextEdit不会显示键盘上不可用的特殊字符

时间:2016-12-25 13:44:41

标签: c++ qt qt4

我必须在QTextEdit中显示一些特殊字符,如¼,½等,它们不在QWERTY键盘上。我可以在QTextEdit中键入这些字符,并且还可以粘贴它们。但是当我尝试以编程方式设置这些字符时,QTextEdit会显示一个额外的字符“”。

键入和粘贴时我没有遇到此问题。这些字符使用一些Alt + [code]代码键入。

我在Windows 8 64位上使用Qt 4.8。

#include<QtGui>

int main(int argc, char *argv[])
{
 QApplication a(argc, argv);
QTextEdit t;
    t.setPlainText("¼2½  \n");              // QTextEdit displays=> ¼2½
    //    t.setHtml("¼2½  \n");             // QTextEdit displays=> ¼2½
    //    t.insertHtml("¼2½  \n");          // QTextEdit displays=> ¼2½
    //    t.insertPlainText("¼2½  \n");     // QTextEdit displays=> ¼2½
// also tried setHtml() with HTML code which works in Firefox didn't help me 
    t.show();
    return a.exec();
}

如何在没有这个额外字符的情况下以编程方式将这些字符放在QTextEdit中?

2 个答案:

答案 0 :(得分:2)

您的源代码需要以UTF-8编码编写,您应该在Qt 5中使用QStringLiteral或在Qt 4中使用QString::fromUtf8。那么您将不会遇到这个问题。

E.g:

t.setPlainText(QStringLiteral("¼, ½"));    // Qt 5
t.setPlainText(QString::fromUtf8("¼, ½")); // Qt 4

确保您正在使用的编辑器设置为将文件编码为UTF-8,而不是拉丁语1等。

答案 1 :(得分:0)

使用QTextCodec以UTF-8编码显示字符。

#include <QTextCodec>
...
QTextCodec* codec=QTextCodec::codecForName("UTF-8");
//    QTextCodec::setCodecForLocale(codec); //if you want everything to be in UTF-8
QTextCodec::setCodecForCStrings(codec);
QApplication a(argc, argv);
...

或者转换字符:

t.setPlainText(QObject::trUtf8("¼2½  \n"));