无法正确显示语言和语言切换

项目中使用 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);
相关推荐
ALONE_WORK7 个月前
Qt Android 动态加载动态库失败
android·websocket·qt android 移植·qt c++·qt for android
ALONE_WORK7 个月前
Qt 运行 Android 程序时找不到 Toou2D 库闪退
android·开发语言·qt·平板·qt android 移植·toou2d·qt for android
ALONE_WORK7 个月前
Qt for Android 配置 gradle
android·gradle·qt android 移植