Qt5:报错error: 'tr' was not declared in this scop

本文详细解析了Qt中国际化翻译函数tr的正确使用方法,强调了tr函数作为QObject类的静态成员,仅能在QObject及其子类中调用。文章通过实例展示了在QObject外部如何正确引用tr函数,以实现跨语言的文本翻译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当使用Qt国际化翻译函数tr时,如果超出了使用范围就会出现以下情况:

国际化翻译函数tr是QObject类的静态公共成员函数,而QObject类是所有Qt对象的基类,国际化翻译函数tr只有在QObject类或者其子类中可以使用,像QWidgets就是继承自QObject类,因此在QWidgets的小部件中就可以直接使用国际化翻译函数tr,如果是在QObject类外部,使用tr函数进行翻译是不起作用的,需要添加QObject头文件#include <QObject>,并使用QObject::规定其作用域范围,像下面这样。

#include <QObject>
int main(int argc, char *argv[])
{   
    QApplication a(argc, argv);
    QDialog dialog; 
    QString temp = QObject::tr("dadasda");//works fine
    dialog.show();
    return a.exec();
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值