debugging 为什么从静态库导入资源文件.qrc时QML调试不起作用

qyswt5oh  于 2023-11-22  发布在  其他
关注(0)|答案(1)|浏览(158)

我在一个静态库项目中填充了一组.qrc文件。在应用程序项目中,我初始化资源如下:

QGuiApplication app(argc, argv);
Q_INIT_RESOURCE(base);
Q_INIT_RESOURCE(images);

...

字符串
应用程序运行并正确加载所有.qrc文件。当我在资源内定义的任何.qml文件中放置断点时,应用程序停止,但Qt Creator无法将我指向断点所在的行。如果我单击恢复(F5),应用程序将正确恢复。当断点命中时,调试表达式求值器仅显示旋转轮,直到执行恢复:x1c 0d1x
当命中断点时(我确信是这样),IDE不会在红色圆圈内显示黄色箭头:

我按照文档中的指示,启用了QML调试,还设置了:

CONFIG += declarative_debug
CONFIG += qml_debug


在我的专业。不幸的是没有运气。
版本

  • QtCreator:8.0.0基于Qt 6.3.1(GCC 10.3.1 20210422(Red Hat 10.3.1-1),x86_64)
  • Qt:5.15.2 GCC 64位

你能帮我理解这是怎么回事吗?谢谢

3df52oht

3df52oht1#

同样的问题:Debugging QML stored in qrc within shared library
最后,我得出了以下方案:

  • 资源文件未导入共享库
  • 应用程序项目中导入的资源文件

由于我有多个应用程序使用共享资源,我必须以这种方式组织项目结构:

  • 资源
  • res 1文件夹
  • res1.qrc //其中res 1文件夹被添加为目录
  • res 2文件夹
  • 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),并且新资源不应该要求别名(通过脚本或手动插入)以确保无摩擦开发

问候

相关问题