繁体   English   中英

Qt 不支持 Unicode for Visual Studio 或字体错误

[英]Qt dont support Unicode for Visual studio or Font error

我是初学者,现在我正在学习 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();
}

两个问题:

  1. 在源文件中使用硬编码的 unicode 字符通常不是一个好主意。 编辑器和编译器有时可以做正确的事情。 编辑器可以另存为 UTF-8 或 Unicode。 编译器可以假设读取 BOM 标头并切换编码......通常。 但是团队成员和源代码存储库系统经常做错事。 其他人带来了不同的编辑器、源代码控制系统等……而 unicode 的东西就搞砸了。 它还破坏了不同的工具。 我已经看到它发生太多次了。

  2. Qt 的 QString 看到您将 8 位 ascii 字符串传递到 QString 构造函数中。 然后他们的编码解释规则开始生效。所以它会用 unicode 字符串做得更好。

为了两全其美,请将您的字符串存储在带有 unicode 转义字符的源代码中,但作为宽字符串传递给 QString 构造函数:

在线使用此工具将您的某些字符转换为\ꯍ转义序列。

取而代之的是:

nutBam.setText("Nút khẩn cấp !");

这个:

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 !");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM