我对QtCreator很新,我的问题是我无法看到QML自定义组件。
例如,如果您导入QtQuick.Controls 1.5,您会在QML类型下看到: - Qt Quick - 控制。
到目前为止,我已经创建了我的个人组件集,这里是文件夹结构:
# 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位于同一目录但不是组件目录中的那些:
这是我在.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代码能够,我在这里缺少什么?
答案 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文件