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

问题描述 投票:0回答:1

我是初学者,现在我正在学习Qt并与Visual Studio,扩展Qt VS工具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();
}
c++ qt
1个回答
0
投票

两个问题:

  1. 在源文件中具有硬编码的Unicode字符通常不是一个好主意。编辑器和编译器有时可以做正确的事。编辑者可以另存为UTF-8或Unicode。通常,编译器可以假定已读取BOM表头并切换编码。但是团队成员和源代码存储库系统经常做错事。其他人带来了不同的编辑器,源代码控制系统等,并且unicode的内容被弄乱了。它还破坏了差异工具。我已经看到它发生太多次了。

  2. Qt的QString看到您正在将8位ascii字符串传递到QString构造函数中。然后他们的编码解释规则开始执行。因此,使用unicode字符串会更好。

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

我用this tool online将您的某些字符转换为\uABCD转义序列。

代替此:

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

此:

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 !");
© www.soinside.com 2019 - 2024. All rights reserved.