那么如果我有以下属性怎么办:
property string someString: qsTr("Text")
我有以下功能:
function isEqual(toThisString) {
if (someString === toThisString) {
return true
} else
return false
}
}
我的问题是,如果我的应用程序翻译了除英语之外的其他语言,该怎么办?该功能是否仍会与" Text"或者它会与翻译后的字符串进行比较吗?
答案 0 :(得分:3)
Qt的一个例子:
const QString english = "Hello world");
const QString spanish = QObject::tr(english); // Hola mundo
是平等吗?
qDebug() << "Is equal? " << (english == spanish);
qDebug() << "Is equal? " << (QObject::tr(english) == spanish);
结果:
Is equal? false
Is equal? true
您必须翻译每个字符串,并且应该完全相同的字符串。这很难管理,看起来像灾难的食谱。
您必须使用替代数据字段来比较值,避免使用字符串。 QCombobox的示例:
enum Countries {EEUU = 0, Spain, France};
QCombobox* combo = new QCombobox;
combo->addItem(QObject::tr("EEUU"), EEUU);
combo->addItem(QObject::tr("Spain"), Spain);
combo->addItem(QObject::tr("France"), France);
要获取所选国家/地区或与组合模型中的字段进行比较,您可以使用currentData()函数或类似的内容。