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

qtl对象类型不是QTCreator中的类型错误,qt,qml,qqmlcomponent,Qt,Qml,Qqmlcomponent,大家好,我是QT的新手,在通过另一个qml加载一个qml时遇到问题 基本上我已经创建了一个qml MyTabView(MyTabView.qml) 我试图通过同一目录中的另一个qml(main.qml)来显示它 import QtQuick 2.3 import QtQuick.Controls 1.2 import "." ApplicationWindow { visible: true width: 640 height: 480 title: qsTr("Main") MyTabVi

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

我试图通过同一目录中的另一个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选项卡视图不是类型

请注意,我在MyTabView.qml中有M个Caps,并且MyTabView.qml和main.qml位于同一目录中

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

您应该将“TabView.qml”重命名为类似“MyTabView.qml”的名称

因为这一点

import "."

“QtQuick.Controls 1.2”中的选项卡视图与本地文件夹存在冲突。“

我也遇到类似问题

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

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

工作组:

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

我认为没有斜杠,它不会在实际文件夹中搜索。

您是否已将该文件添加到您的资源中?
将您的
MyTabView.qml
添加到与
main.qml
目录相同的项目中是不够的。
您必须将QML文件放在参考资料中(可能是
main.qrc/QML/
),以便部署它。

Qt Creator的编辑器不需要包含此项来查找您的类型,因此它不会显示错误。

此错误也可能是由组件出错引起的。例如,我有一系列错误:

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
中的问题引起的。当我纠正这个错误时,其他的一切都起作用了


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

您已经调用了自己的类
TabView
,同时使用了Qt的
TabView
。更改类名(在QML中,类名是QML定义文件的名称)。我已将xml文件的名称更改为
MyTabView.xml
,正在调用
MyTabView{}
main.xml中的
但是我得到了相同的错误
MyTabView不是一种类型
我已经将我的xml文件的名称更改为
MyTabView.xml
并且在
main.xml
中调用了
MyTabView{}
,但是我得到了相同的错误
MyTabView不是一种类型
@bourne为什么使用“xml”源文件的扩展名?qml和xml之间没有相似之处。谢谢!Qt提供的任何示例中都没有写这一点!这就解决了我的问题。如果你解决了你的问题,你应该考虑接受这个答案。“MartinDelille,你说得对。”但我不是海报:)我已经对答案投了赞成票对不起@A.Ocannaille!我想和@bourne!通话:-)我不明白为什么Qt Creator将QML文件放在一个特殊的“QML”文件夹中,但没有按要求将它们添加到资源中。我也有同样的问题。有人知道这一点的解释吗?我认为(!)斜杠与文件夹结构无关,而是与您在qrc文件中设置的前缀有关。但默认前缀只是“/”。因此,只要不添加另一个前缀,它就会给出与文件夹结构相同的结果,
view.setSource(QUrl("qrc:/AGview.qml"));
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