12

大家好,我是 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.qml 而不是MyTabView {}内部main.qml的所有代码时,程序不会给出任何错误并正确运行。提前致谢

4

4 回答 4

20

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

于 2016-06-30T19:43:17.207 回答
5

我有一个类似的问题。

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

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

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

工作的人:

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

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

于 2015-03-11T17:04:13.053 回答
1

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

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。当我修复该错误时,其他一切正常。

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

于 2020-01-26T09:18:09.010 回答
0

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

因为那个进口

import "."

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

于 2014-11-17T10:02:29.900 回答