QML对象类型不是QTCreator中的类型错误

时间:2014-11-17 09:34:38

标签: qt qml qqmlcomponent

大家好我是QT的新手,我在通过另一个qml加载一个qml时遇到问题 基本上我已经创建了一个qml MyTabView(MyTabView.qml)

 import QtQuick 2.3
 import QtQuick.Controls 1.2

TabView {
    width: 360
    height: 360

    Component.onCompleted: {
        addTab("Tab 1", tab1)

      addTab("Tab 2", tab2)
    }

    Component {
        id: tab1
        Rectangle {color: "red"}
    }

    Component {
        id: tab2
        Rectangle {color: "blue"}
    }
}

我试图通过位于同一目录中的另一个qml(main.qml)来显示它

import QtQuick 2.3
import QtQuick.Controls 1.2
import "."

ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Main")

MyTabView {}

}

但是当我尝试运行我的项目时,我收到此错误

QQmlApplicationEngine无法加载组件 qrc:/qml/main.qml:11 TabView不是类型

请注意我在MyTabView.qml中有M Caps,而MyTabView.qml和main.qml在同一目录中。

有人能指出我在做什么错吗? 我想指出的一点是,当我在MyTabView {}内替换MyTabView.qml的所有代码而不是main.qml时,程序不会给出任何错误并正确运行。 提前致谢

4 个答案:

答案 0 :(得分:14)

您是否已将文件添加到资源中?
MyTabView.qml的同一目录中将main.qml添加到项目中是不够的 您必须将QML文件放在参考资料中(可能是main.qrc/qml/)才能部署它 Qt Creator的编辑器不需要这个包含来找到你的类型,因此它没有显示错误。

答案 1 :(得分:2)

我遇到了类似的问题。

  

qrc:AGview.qml:8:15:AGraph不是类型

我解决了它: 我的原始代码(在我的main.cpp中):

view.setSource(QUrl("qrc:AGview.qml"));

工作人员:

view.setSource(QUrl("qrc:/AGview.qml"));

我认为没有斜线就不会在实际文件夹中搜索。

答案 2 :(得分:0)

您应该将“TabView.qml”重命名为“MyTabView.qml”。

因为导入

import "."

你有来自“QtQuick.Controls 1.2”和本地文件夹“。”的TabView冲突。

答案 3 :(得分:0)

此错误也可能是由组件出现错误引起的。例如,我有以下错误序列:

QQmlApplicationEngine failed to load component
qrc:/main.qml:6 Type MainView unavailable
qrc:/MainView.qml:27 Type ApplicationLocked unavailable
qrc:/ApplicationLocked.qml:4 MetaStateChart is not a type

这不是很清楚,因为MainView中的错误是由ApplicationLocked中的问题引起的。当我修复该错误后,其他所有功能均正常工作。

因此,与从第一个编译器错误开始的传统观点相反,可能有必要从最后一个编译器错误开始!