bou*_*rne 8 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"}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图通过另一个qml(main.qml)显示它在同一目录中
import QtQuick 2.3
import QtQuick.Controls 1.2
import "."
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Main")
MyTabView {}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行我的项目时,我得到了这个错误
QQmlApplicationEngine无法加载组件qrc:/qml/main.qml:11 TabView不是一个类型
请注意我在MyTabView.qml中有M Caps,MyTabView.qml和main.qml在同一目录中.
有人能指出我在做什么错吗?我想指出的一件事是,当我替换MyTabView.qml的所有代码而不是MyTabView {}
内部时main.qml
,程序不会给出任何错误并正确运行.提前致谢
SR_*_*SR_ 16
您是否已将文件添加到资源中?
将您MyTabView.qml
的项目添加到同一目录中main.qml
是不够的.
您必须将您的QML文件放在参考资源(可能main.qrc/qml/
)中才能部署它.
Qt Creator的编辑器不需要这种包含以便找到您的类型,因此它不会显示任何错误.
小智 5
我有一个类似的问题。
qrc:AGview.qml:8:15:AGraph不是类型
我解决了它:我的原始代码(在我的main.cpp中):
view.setSource(QUrl("qrc:AGview.qml"));
Run Code Online (Sandbox Code Playgroud)
工作中的一个:
view.setSource(QUrl("qrc:/AGview.qml"));
Run Code Online (Sandbox Code Playgroud)
我认为没有斜杠就不会在实际文件夹中搜索。
您应该将“TabView.qml”重命名为“MyTabView.qml”之类的名称。
因为那个进口
import "."
Run Code Online (Sandbox Code Playgroud)
您的“QtQuick.Controls 1.2”和本地文件夹“”中的 TabView 存在冲突。