QTextEdit 不显示键盘上不可用的特殊字符
QTextEdit doesn't display special characters not available on keyboard
我必须在 QTextEdit 中显示一些特殊字符,如 ¼、½ 等,这些字符不在 QWERTY 键盘上 keyboard.I 我可以在 QTextEdit 中键入这些字符,也可以粘贴它们。但是当我尝试以编程方式设置这些字符时,QTextEdit 会显示一个额外的字符 'Â'。
我在输入和粘贴时没有遇到这个问题。这些字符是用一些 Alt+[代码] 代码键入的。
我在 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 中?
使用 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"));
您的源代码需要以 UTF-8 编码编写,并且您应该在 Qt 5 中使用 QStringLiteral
或在 Qt 4 中使用 QString::fromUtf8
。那么您将不会有那个问题。
例如:
t.setPlainText(QStringLiteral("¼, ½")); // Qt 5
t.setPlainText(QString::fromUtf8("¼, ½")); // Qt 4
确保您使用的编辑器设置为将文件编码为 UTF-8,而不是 Latin 1 等。
我必须在 QTextEdit 中显示一些特殊字符,如 ¼、½ 等,这些字符不在 QWERTY 键盘上 keyboard.I 我可以在 QTextEdit 中键入这些字符,也可以粘贴它们。但是当我尝试以编程方式设置这些字符时,QTextEdit 会显示一个额外的字符 'Â'。
我在输入和粘贴时没有遇到这个问题。这些字符是用一些 Alt+[代码] 代码键入的。
我在 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 中?
使用 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"));
您的源代码需要以 UTF-8 编码编写,并且您应该在 Qt 5 中使用 QStringLiteral
或在 Qt 4 中使用 QString::fromUtf8
。那么您将不会有那个问题。
例如:
t.setPlainText(QStringLiteral("¼, ½")); // Qt 5
t.setPlainText(QString::fromUtf8("¼, ½")); // Qt 4
确保您使用的编辑器设置为将文件编码为 UTF-8,而不是 Latin 1 等。