我必须在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中?
答案 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"));