QtCreator Designer如何在QML类型中查看自定义对象?

时间:2017-10-27 15:33:21

标签: qt qml qt-creator qtquick2 qt-designer

我对QtCreator很新,我的问题是我无法看到QML自定义组件。

例如,如果您导入QtQuick.Controls 1.5,您会在QML类型下看到:   - Qt Quick - 控制。

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

qrc folder setup 组件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
}

正在编译并显示正常但在Designer内部没有任何显示为预期,我只看到.qml位于同一目录但不是组件目录中的那些:

As you can see I can't see GenericButton or Footer, etc

这是我在.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代码能够,我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

不确定您是否已经解决了问题,但请尝试以下步骤4和5: http://doc.qt.io/qtcreator/creator-qml-modules-with-plugins.html

这使它对我有用,虽然我在这里询问的metainfo文件存在一些问题:QtCreator Custom Module Issue。简而言之,您可以使用这个人元信息文件作为示例(或者查看上面说明中引用的Qt文档):https://forum.qt.io/topic/56207/how-to-load-custom-qml-controls-into-the-qml-designer/2

只需确保将设计器文件夹放在模块qmldir所在的位置,然后metainfo文件就在那里。可能命名的components.metainfo根据模块名称判断,不确定是否重要。

我猜你是否只是在表单中从头开始添加一个组件,你会看到设计器中的实际对象加载正常,你只是在QML类型窗格中看不到它能够拖放直到你创建一个.metainfo文件