我是初学者,现在我正在学习 Qt 并使用 Visual Studio,扩展 Qt VS Tool 2.4.3,我使用的文本是越南语,当我构建程序时,它很好,但按钮显示特殊字符。
我已经阅读了一些有关字体错误的主题,但它与此错误无关。
我的代码:
#include <QtWidgets/QApplication>
#include <QPushButton>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton nutBam; // instance
nutBam.setText("Nút khẩn cấp !"); //set Text button
nutBam.show();
return app.exec();
}
两个问题:
在源文件中使用硬编码的 unicode 字符通常不是一个好主意。编辑器和编译器有时可以做正确的事情。编辑器可以另存为 UTF-8 或 Unicode。编译器通常可以假设读取 BOM 标头并切换编码。但团队成员和源代码存储库系统经常做错事。其他人使用了不同的编辑器、源代码控制系统等......并且 unicode 的东西变得混乱。它还会破坏差异工具。我已经看到这样的事情发生太多次了。
Qt 的 QString 看到您正在将 8 位 ascii 字符串传递到 QString 构造函数中。然后他们的编码解释规则就会生效。所以使用 unicode 字符串效果会更好。
为了获得两全其美的效果,请使用 unicode 转义字符将字符串存储在源代码中,但将其作为宽字符串传递给 QString 构造函数:
I used 这个工具在线 https://dencode.com/string/unicode-escape将您的一些角色转换为\uABCD
转义序列。
而不是这个:
nutBam.setText("Nút khẩn cấp !");
This:
const wchar_t* text = L"N\u00fat kh\u1ea9n c\u1ea5p !";
QString qText(text);
nutBam.setText(qText);
尽管这不再是问题,但请确保您的编辑器将源代码保存为 ANSI 或 UTF-8,而不是 16 位 unicode。
我目前没有在本地安装 Qt,但上面的内容可能会合并为这样:
nutBam.setText(L"N\u00fat kh\u1ea9n c\u1ea5p !");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)