QT中字符串加tr u8的意思
开发中遇到的问题
- @[TOC](开发中遇到的问题)
- tr()和u8
- 类似的符号
开发中遇到的问题
- @[TOC](开发中遇到的问题)
- tr()和u8
- 类似的符号
在QT代码中我们经常看见tr(“string”)、u8"string" 这些符号,那这些符号是什么意思呢
tr()和u8
其实tr()是用于翻译标记用的,u8则是将字符串格式转换为utf-8格式。
tr()
tr() 是 Qt 提供的一个函数,主要用于支持国际化(i18n)。它允许你在应用程序中为文本标记以便于后续的翻译工作。当你使用 tr() 包裹一个字符串时,Qt 的工具可以识别这些字符串,并将它们提取出来以供翻译。翻译文件一般是以.ts后缀结尾,然后在资源文件中添加即可进行识别翻译
QPushButton *button = new QPushButton(tr("Click Me"), this);
QLabel *label = new QLabel(tr("Hello, World!"), this);
/*翻译文件*/
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context><name>MyWidget</name><message><location filename="mywidget.cpp" line="34"/><source>Hello, World!</source><translation>你好,世界!</translation></message><message><location filename="mywidget.cpp" line="52"/><source>Click Me</source><translation>点击我</translation></message>
</context>
</TS>
u8
u8 是 C++11 引入的一种字符编码前缀,用来指定字符串字面量应被视为 UTF-8 编码的字符串。然而,在 Qt 中,由于 QString 默认就是使用 UTF-16 编码的,所以直接使用 u8 前缀与 QString 结合并不常见,且不推荐这样做。相反,Qt 提供了其他方法来处理不同编码的字符串。
const char *utf8String = u8"这是一个UTF-8字符串";
类似的符号
QStringLiteral
在编译期创建 QString,避免运行时开销。适用于已知的静态字符串。
QString hello = QStringLiteral("Hello, world!");
qsTr()
应用于QML中,在 QML 中用于标记可翻译的字符串。
Text { text: qsTr("Hello") }
以上的话就是本文的全部内容,如果有什么错误或者建议请指正,感谢!共同进步!