首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QML包含来自不同目录的问题

QML包含来自不同目录的问题
EN

Stack Overflow用户
提问于 2018-12-15 00:37:15
回答 1查看 1.6K关注 0票数 5

对于我的QML文件,我有一个类似这样的目录结构:

代码语言:javascript
复制
qml.qrc
main.qml
LockScreen/
  LockScreen.qml
QuickMenu/
  QuickMenu.qml
misc/
  KeyboardInput.qml

(我还排除了其他文件,但这与此无关)

我已将上述所有文件添加到我的qrc文件中,并为每个目录加上前缀:

代码语言:javascript
复制
<RCC>
    <qresource prefix="/">
        <file>main.qml</file>
        <file>qtquickcontrols2.conf</file>
        <file>MessagePopup.qml</file>
        <file>MessagePopupForm.ui.qml</file>
    </qresource>
    <qresource prefix="/LockScreen">
        <file>LockScreen/LockScreen.qml</file>
        <file>LockScreen/fingerprint.png</file>
        <file>LockScreen/fingerprint_highlighted.png</file>
    </qresource>
    <qresource prefix="/MainPages">
        <file>MainPages/LibraryPage.qml</file>
        <file>MainPages/CameraPage.qml</file>
        <file>MainPages/MessagesPage.qml</file>
        <file>MainPages/HomePage.qml</file>
        <file>MainPages/saturn.jpg</file>
    </qresource>
    <qresource prefix="/QuickMenu">
        <file>QuickMenu/QuickMenu.qml</file>
    </qresource>
    <qresource prefix="/misc">
        <file>misc/KeyboardInput.qml</file>
    </qresource>
</RCC>

我的问题是,当我像这样导入每个前缀时

代码语言:javascript
复制
import "misc"
import "MainPages"
import "QuickMenu"
import "LockScreen"

在我的main.qml中,我收到一个错误,其中一个QML对象不是类型。

代码语言:javascript
复制
QQmlApplicationEngine failed to load component
qrc:/main.qml:67 LockScreen is not a type

奇怪的是,我可以使用QtCreator的intellisense访问我的所有对象,在构建和运行应用程序之前,一切似乎都很好地导入。有没有办法证明qrc路径已经过时了?还是旧的缓存文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-15 01:18:23

这个问题是由前缀引起的,该前缀似乎在路径中添加了一个级别,因此在您的示例中,导入应该是:

代码语言:javascript
复制
import "./LockScreen/LockScreen"

尽管编辑器丢失了自动完成并抛出警告。因此,问题似乎在于在解释qresource别名时遇到问题的编辑器。

更好的选择是为.qml文件使用别名:

代码语言:javascript
复制
...
<qresource prefix="/LockScreen">
    <file alias="LockScreen.qml">LockScreen/LockScreen.qml</file>
    ...

main.qml

代码语言:javascript
复制
import "LockScreen"

LockScreen{
    // ...
}

注意:别名必须有一个.qml扩展,否则correctly将无法正确识别

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53788562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档