提问人:LDC 提问时间:11/13/2023 最后编辑:LDC 更新时间:11/16/2023 访问量:41
为什么从静态库导入资源文件.qrc时QML调试不起作用
Why QML debugging is not working when resource file .qrc is imported from a static library
问:
我在静态库项目中填充了一组 .qrc 文件。 在应用程序项目中,我按如下方式初始化资源:
QGuiApplication app(argc, argv);
Q_INIT_RESOURCE(base);
Q_INIT_RESOURCE(images);
...
应用程序将运行并正确加载所有 .qrc 文件。当我在资源中定义的任何.qml文件中放置断点时,应用程序会停止,但Qt Creator无法将我指向中断所在的行。如果我单击恢复 (F5),应用程序将正确恢复。 当命中断点时,调试表达式计算器仅显示一个旋转的轮子,直到恢复执行:
当命中断点时(我确定是),IDE 不会在红色圆圈内显示黄色箭头:
我按照文档中的指示,启用了QML调试,还设置了:
CONFIG += declarative_debug
CONFIG += qml_debug
在我的 .pro 中。不幸的是,没有运气。
版本
- QtCreator:基于 Qt 6.3.1 的 8.0.0(GCC 10.3.1 20210422 (Red Hat 10.3.1-1),x86_64)
- Qt:5.15.2 GCC 64位
你能帮我了解发生了什么吗? 谢谢
答:
0赞
LDC
11/16/2023
#1
这里问的问题是:调试存储在共享库中qrc中的QML
我最终得到了以下方案:
- 资源文件未导入到共享库中
- 在应用程序项目中导入的资源文件
由于我有多个应用程序使用共享资源,因此我必须以这种方式组织项目结构:
根
- 资源
- res1 文件夹
- res1.qrc //res1文件夹作为目录添加的位置
- res2 文件夹
- res2,
- ...
- project1.pro //使用 res*.qrc
- project2.pro //使用 res*.qrc
- ...
这是我找到的唯一满足以下约束的方案:
- 添加到 .qrc 的内容必须位于 .qrc 文件的同一文件夹或子文件夹中
- 添加到资源的目录应该在QtCreator项目窗格中以简单名称显示(例如,不是
res.qrc
/very/long/absolute/path/res.qrc
) - 资源文件中的内容也应该用一个简单的名称显示(例如 不是),并且新资源不应要求别名(通过脚本或手动插入)以确保无摩擦开发
res.qrc/res/myitem.qml
res.qrc/../../very/long/path/to/myitem.qml
此致敬意
评论