Qt tr()函数不起效的小问题
问题描述:
在涉及到多国语言翻译这一问题时,书中14章只介绍了基本的使用方法,但在书中第8章第2个例子中,结合tr()方法却不能完成翻译。
因为第8章第2个例子需要翻译的对象是由QAbstractTableModel这个类继承来的。
附上部分关键代码:
这是根据书中原例更改的程序,注意,此代码中直接使用了tr()函数
。。。省略。。。。。。
翻译失败了。
可是为什么呢?
后来我去stackoverflow上查了一圈,有人提到,tr这个函数本质上是从Qobject这个类中调用的。
所以我将代码修改为:
#include "modelex.h"
#include <QObject>ModelEx::ModelEx(QObject *parent)
:QAbstractTableModel(parent)
{
armyMap[1] = QObject::tr("AirForce");
armyMap[2] = QObject::tr("Navy");
armyMap[3] = QObject::tr("GroundForce");
armyMap[4] = QObject::tr("Marine");
weaponTypeMap[1] = QObject::tr("Bomber");
weaponTypeMap[2] = QObject::tr("Fighter");
weaponTypeMap[3] = QObject::tr("Aircraft Carrier");
weaponTypeMap[4] = QObject::tr("Destroyer");
weaponTypeMap[5] = QObject::tr("Helicopter");
weaponTypeMap[6] = QObject::tr("Tank");
weaponTypeMap[7] = QObject::tr("Amphibious Assault Ship");
weaponTypeMap[8] = QObject::tr("Amphibious Tank");
populateModel();
}void ModelEx::populateModel()
{
header<<QObject::tr("Services")<<QObject::tr("Species")<<QObject::tr("Weapons");
army<<1<<2<<3<<4<<2<<4<<3<<1;
weaponType<<1<<3<<5<<7<<4<<8<<6<<2;
weapon<<QObject::tr("B-2")<<QObject::tr("Nimitz Class")<<QObject::tr("Apachi")<<QObject::tr("Hornet Class")
<<QObject::tr("Arley Burke Class")<<QObject::tr("AAAV")<<QObject::tr("M1A1")<<QObject::tr("F-22");
}
————————————————
版权声明:本文为CSDN博主「CarnivoreRabbit」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/horsee/article/details/56673478