2014-11-17 49 views
5

大家好我是新來QT和我有 基本上我已經創建了一個QML MyTabView(MyTabView.qml)難以透過另一QML加載一個QMLQML對象類型不QTCreator類型錯誤

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和MyTabView.qml和main.qml中號帽是在同一目錄。

有人可以指出我在做什麼錯誤嗎? 我想要指出的一件事是,當我替換main.qml中的所有MyTabView.qml代碼而不是MyTabView {}時,程序不會給出任何錯誤並正確運行。 在此先感謝

+0

您在同時使用Qt的「TabView」時調用了自己的類「TabView」。更改您的類名稱(在QML中,類名稱是QML定義文件的名稱)。 – cmannett85

+0

我已將my xml文件的名稱更改爲「MyTabView.xml」,並正在'main.xml'中調用MyTabView {}'但我得到相同的錯誤'MyTabView不是類型' – bourne

回答

0

您應該將您的「TabView.qml」重命名爲「MyTabView.qml」。

因爲那進口

import "." 

你從 「QtQuick.Controls 1.2」 TabView的衝突和本地文件夾的 「」

+0

我已更改名稱我的xml文件添加到'MyTabView.xml',並在main中調用'MyTabView {}'。xml'但是我得到同樣的錯誤'MyTabView不是一個類型' – bourne

+0

@bourne爲什麼你的源文件使用「xml」擴展名? qml和xml之間沒有任何相似之處。 – QtRoS

2

我有類似的問題。

QRC:AGview.qml:8:15:阿格拉夫不是一個類型

我解決了它: 我的原代碼(在我main.cpp中):

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

工作之一:

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

我認爲沒有斜槓它不在實際的文件夾中搜索。

+0

我有同樣的問題。有誰知道這個解釋嗎? – philipp

10

您是否已將文件添加到資源?
MyTabView.qml添加到main.qml相同目錄下的項目是不夠的。
您必須將您的QML文件放入資源(可能是main.qrc/qml/)才能部署它。
Qt Creator的編輯器不需要這個包含來找到你的類型,因此它不顯示錯誤。

+0

謝謝!這不是在Qt提供的任何示例中寫的!這解決了我的情況。 –

相關問題