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

问题描述 投票:0回答:1

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

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

...

应用程序运行并正确加载所有 .qrc 文件。当我在资源内定义的任何 .qml 文件中放置断点时,应用程序会停止,但 Qt Creator 无法将我指向断点所在的行。如果我单击恢复 (F5),应用程序将正确恢复。 当断点被击中时,调试表达式求值器仅显示一个旋转的轮子,直到恢复执行:

当断点被击中时(我确定是这样),IDE 不会显示红圈内的黄色箭头:

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

CONFIG += declarative_debug
CONFIG += qml_debug

在我的.pro中。不幸的是没有运气。

版本

  • 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 位

你能帮我了解发生了什么事吗? 谢谢

debugging qml qt-creator
1个回答
0
投票

这里问同样的问题: 调试共享库中 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
    ),并且新资源不应需要别名(通过脚本或手动插入)以确保无摩擦的开发

致以诚挚的问候

© www.soinside.com 2019 - 2024. All rights reserved.