Qt给const的QString进行多国语言遇到的问题

14 篇文章 0 订阅

0. 缘起

在软件中,我先使用一个const QString的变量表示当前软件的名称,主要是我感觉这个在整个程序中是不会改动的,因此就使用了const修饰。
如下所示:

// 头文件
#ifndef SOFTWAREINFO_H
#define SOFTWAREINFO_H

#include <QString>

class SoftwareInfo
{
public:
    static QString getAppName() {return SW_APP_NAME;};
    // 省略其他代码
private:
    SoftwareInfo() = delete;
    SoftwareInfo(const SoftwareInfo& other) = delete;
    SoftwareInfo &operator=(const SoftwareInfo& other) = delete;

    static const QString SW_APP_NAME;
};

#endif // SOFTWAREINFO_H

// 源文件
// 省略其他代码
const QString SoftwareInfo::SW_APP_NAME= "SoftwareName";

但是,后来想多国语言化,在不同的语言中展示不同的名字。
于是,我将源文件中的内容修改成:

const QString SoftwareInfo::SW_APP_NAME = QObject::tr("SoftwareName");

以上的内容,使用Qt语言家能够正确识别,并且在软件中正常翻译了。
但上面的翻译在实际的使用中并不起作用。

2. 原因分析

这是由于已经将其设置为const的内容,是不能改变的。多国语言话后的翻译也不能替代原始的内容,导致了多国语言翻译的失败。

3. 修改方法

对于这样的情况,不能使用const变量,可以使用如下的方法:

QString SoftwareInfo::getAppName()
{
    // 这个类型的不能使用static const的变量
    return QObject::tr("SoftwareName");
}

这样对应的内容就能展示成功类。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值