使用QRC通过QML文件定义和使用类型的问题

时间:2015-09-29 20:58:00

标签: c++ qt qml

我在通过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>

0 个答案:

没有答案