QtCreator设计器如何在QML类型中看到自定义对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (626)

我对QtCreator非常陌生,我的问题是我无法看到QML自定义组件。

例如,如果导入QtQuick.Controls 1.5,可以在QML类型:-QtQuick-Controls下面看到。

到目前为止,我已经创建了我的个人组件集,下面是文件夹结构:

组件qmldir就是这样完成的:

# qmldir
module components
Header 1.0 Header.qml
Footer 1.0 Footer.qml
CentralPage 1.0 CentralPage.qml
GenericButton 1.0 GenericButton.qml
ProgressBarCustom 1.0 ProgressBarCustom.qml

而不是LandingPageFrom.ui.qml

import QtQuick 2.6
import QtQuick.Controls 1.5
import QtQuick.Layouts 1.3

import components 1.0 as Components

Components.CentralPage {
    pageName: "landingPage"

    id: landingPage

    width: 800
    height: 1056
    property alias aButton: aButton

    Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
}

而且编译和显示都很好,但是在设计器内部,没有什么显示为立体化的,我只看到在同一个目录中的.qml,而不显示在Components目录中的.qml:

这就是我在.pro和main.cpp中所做的

QML_IMPORT_PATH += $$PWD/resources/common/ui
QML_DESIGNER_IMPORT_PATH += resources/common/ui

main.cpp

QQmlApplicationEngine engine;
engine.addImportPath("qrc:///ui");
engine.load(QUrl("qrc:///ui/main.qml"));

奇怪的是,只有设计人员不能看到组件,但是QML代码能够看到,我在这里缺少了什么?

提问于
用户回答回答于

只需确保将模块qmldir所在的Designer文件夹放在那里,metainfo文件就会在那里。根据模块名称判断,可能命名为Components.metainfo,不确定这是否重要。

我猜,如果只是从零开始在表单中添加一个组件,就会看到设计器中的实际对象加载得很好,在生成.metainfo文件之前,将无法在QML类型窗格中看到它。

扫码关注云+社区

领取腾讯云代金券