项目中使用 ts 语言文件,语言文件是放在 assets 资源目录下的
问题描述
界面显示的是字符串,而不是中文或者英文。
问题原因
通过跟踪发现是设置进去的路径错误的,由于 Android 下设置的是 assets 相对路径,所以通过 QUrl 无法转换成绝对路径。
CmdApp cmdApp(qApp, QUrl(resRootPrefix).toLocalFile(), &engine);
解决方法
在 Android 下是不转换为绝对路径
#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);
文章讲述了在项目中使用TS语言时遇到的问题,即Android环境下由于资源路径设置错误导致界面显示字符串而非文本。解决方法是在Android下保持相对路径,而在其他平台则使用QUrl转换为绝对路径并设置到QQmlApplicationEngine上下文中。

被折叠的 条评论
为什么被折叠?



