项目中使用 ts 语言文件,语言文件是放在 assets 资源目录下的
问题描述
界面显示的是字符串,而不是中文或者英文。
问题原因
通过跟踪发现是设置进去的路径错误的,由于 Android
下设置的是 assets
相对路径,所以通过 QUrl
无法转换成绝对路径。
cpp
CmdApp cmdApp(qApp, QUrl(resRootPrefix).toLocalFile(), &engine);
解决方法
在 Android
下是不转换为绝对路径
cpp
#ifdef __ANDROID__
QString resRootPrefix = "assets:/views/";
#else
QString resRootPrefix = "file:./views/";
//处理可能通过参数传递的资源路径
if (parser.isSet(op1) && !parser.value(op1).isEmpty())
{
//有指定另外资源路径
resRootPrefix = parser.value(op1);
}
#endif
QQmlApplicationEngine engine;
QQmlContext* context = engine.rootContext();
context->setContextProperty("resRoot", resRootPrefix);
context->setContextProperty("resImgRoot", resRootPrefix + "img/");
context->setContextProperty("$titleRoot", gTitle);
#ifdef __ANDROID__
QString rpath = resRootPrefix;
#else
QString rpath = QUrl(resRootPrefix).toLocalFile();
#endif
// CmdApp 一定会有
CmdApp cmdApp(qApp, rpath, &engine);