通过新建方式移植 CNC3 项目

本文讲述了作者在Android项目中遇到闪退问题后,通过新建项目、迁移UI资源和调整工程配置来解决问题的过程,包括如何配置assets资源和修改图片资源加载路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建空项目

尝试过很多种方式,Android 下都会闪退,没有办法的情况下只能以归零的心态取搞,直接新建一个项目,项目结构除了 UI 部分的放在 UPCNC 子项目下,其他不变。

这样就可以慢慢的从头开始调试,经过半天的折腾,项目框架搭建完毕,并将原来的 QML 界面相关资源加载到新项目中并顺利的让程序运行起来,这样第一步就基本完成。

工程文件中配置 assets 资源

设置完下面的内容之后需要重新构建,直接运行可能无法将资源拷贝进去。

将 QML 部分代码移植过来之后会发现界面中无法加载的图片资源,其原因是 Android 下查找资源的方式不一样。

  1. 在 UPCNC3.pro 工程文件中增加一下内容,其功能是将 views 下所有资源打包进入到 assets 目录下。
# 配置 Android
android {
lre = D:\software\Qt\5.15.2\android\bin\lrelease
pDir = $${PWD}
pDir = $$replace(pDir, /, \\)
dDir = $${DESTDIR}
dDir = $$replace(dDir, /, \\)
QMAKE_PRE_LINK += xcopy $${pDir}\\views $${dDir}\\assets\\views\\ /Y /E /s

setting.files += $${DESTDIR}/assets/*
setting.path = /assets/
INSTALLS += setting
}

  1. 修改图片资源加载目录,Android 下将 assets 目录作为根目录使用。
int main(int argc, char *argv[])
{
    //...
#ifdef __ANDROID__
    QString resRootPrefix = "assets:/views/";
#else
    QString resRootPrefix = "file:./views/";
#endif
    QQmlApplicationEngine engine;
    QQmlContext* context = engine.rootContext();
    context->setContextProperty("resRoot", resRootPrefix);
    context->setContextProperty("resImgRoot", resRootPrefix + "img/");
    context->setContextProperty("$titleRoot", gTitle);
    const QUrl url(QStringLiteral("qrc:/qml/main.qml"));
    //...
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ALONE_WORK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值