我在通过QML文档定义新对象类型然后尝试使用这些类型时遇到了很多麻烦。对于上下文,我有一个main.qml,它使用MyMenu将MyMenu添加到菜单列表中。那部分工作正常。
从那里,我从MyMenu.qml创建一个MyWindow组件,在MyWindow.qml中我尝试使用AutoTab.qml作为一个类型,以便我可以将标签拆分为单个文件。
我遇到的问题似乎与使用QRC文件有关。如果我不给MyWindow一个别名,我会收到找不到该文件的错误。如果我给MyWindow一个别名,我会收到AutoTab不是类型的错误。
MyMenu.qml
import QtQuick 2.4
import QtQuick.Controls 1.3
Menu {
id: m_MyMenu
title: qsTr("Mine")
MenuItem {
text: qsTr("MyWindow")
onTriggered: {
var component = Qt.createComponent("qrc:/MyWindow");
if (component.status == Component.Ready) {
var obj = component.createObject(null)
obj.visible = true
}
else {
console.log(component.errorString())
}
}
}
}
MyWindow.qml
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
import myqml.controls 1.0
Window {
width: 640
height: 1024
TekHorizontalTabView
{
id: m_horizontaltabview
width: 1000
height: 400
AutoTab {}
Tab {
title: "ManualTab"
}
}
}
AutoTab.qml
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
import myqml.controls 1.0
Tab {
title: "AutoTab"
}
qmlmain.qrc
<RCC>
<qresource prefix="/">
<file>qml/main.qml</file>
<file>qml/MyMenu.qml</file>
<file alias="MyWindow">qml/MyWindow.qml</file>
<file>qml/AutoTab.qml</file>
</qresource>
</RCC>