在qtc中相互公开QML组件

2024-06-02 07:52:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Qt Quick和PySide2开发一个仪表板应用程序,在Qt Creator的设计模式下公开QML组件时遇到了问题。在

我的文件夹结构如下所示:

myapp/
├── mycomponents
│   ├── component1.qml
│   └── component2.qml
│   └── etc..
├── pages
│   ├── page1.qml
│   └── page2.qml
└── app.qml

我可以使用myapp/mycomponents中的所有组件,方法是使用相对路径导入相应的.qml文件或其父目录:

^{pr2}$

问题是,当我在Qt Creator-->Design中打开page.qml(或同级目录中的任何其他.QML文件)时,我无法在My QML components选项卡中看到来自myapp/components的组件。在

所有组件可用于附录qml在

但在page1.qml中没有

如何在不更改项目的文件夹结构的情况下将myapp/components公开到位于同级目录中的.qml文件?

编辑1: 我已经读过docs关于designer.metainfo的文章,但它们似乎都提到了插件应用程序,而我没有。所以我很难让这些应用程序适合我的用例。在


Tags: 文件目录文件夹应用程序components组件quickqt
1条回答
网友
1楼 · 发布于 2024-06-02 07:52:00

设计器只显示来自当前目录或来自已使用导入的组件(可以是一个c++插件,但也可以使用一些qml组件的qmldir)。 因此,您必须创建一个导入并以某种方式将其添加到加载的项目中-不确定pyside使用什么,但是也许创建一个myapp.qml项目所有你需要的qml文件和内部文件:

importPaths: [ "." ]

然后在mycomponents目录中,需要一个qmldir文件

^{pr2}$

此外,还需要包含该文件的designer目录mycomponents.metainfo在

MetaInfo {
    Type {
        name: "Component1"

        ItemLibraryEntry {
            name: "a Test Component1"
            category: "mycomponents"
            version: "1.0"
            requiredImport: "mycomponents"
        }
    }
}

enter image description here

不幸的是,您必须关闭并重新打开项目才能看到结果。在

我准备了一个小例子here

相关问题 更多 >