2014-11-17 11 views
5

Hallo allerseits Ich bin neu in QT und ich habe Probleme ein qml durch eine andere qml Laden Im Grunde ich eine qml MyTabView erstellt haben (MyTabView.qml)QML Objekttyp ist kein Typ Fehler in 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"} 
    } 
} 

und ich versuche, es durch eine andere qml (main.qml) zu zeigen, welche im selben Verzeichnis

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

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

MyTabView {} 

} 

ist, aber wenn ich versuche, mein Projekt, das ich diesen Fehler laufen

QQmlApplicationEngine ausgefallenen Komponente qrc laden: /qml/main.qml: 11 TabView ist kein Typ

Bitte beachten Sie, dass ich habe M Caps in MyTabView.qml und dass MyTabView.qml und main.qml sind in der gleichen Verzeichnis.

Kann mir jemand zeigen, welchen Fehler ich mache? Eine Sache, die ich zeigen möchte, ist, dass, wenn ich den gesamten Code von MyTabView.qml statt MyTabView {} innerhalb main.qml ersetze, das Programm keinen Fehler gibt und richtig läuft. Vielen Dank im Voraus

+0

Sie haben Ihre eigene Klasse 'TabView' aufgerufen, während Sie gleichzeitig' TabView' von Qt verwenden. Ändern Sie den Klassennamen (in QML ist der Klassenname der Name der QML-Definitionsdatei). – cmannett85

+0

Ich habe den Namen meiner XML-Datei in 'MyTabView.xml' geändert und rufe' MyTabView {} 'in' main.xml' auf, aber ich bekomme den gleichen Fehler 'MyTabView ist kein Typ' – bourne

Antwort

0

Sie sollten Ihre "TabView.qml" in etwas wie "MyTabView.qml" umbenennen.

Aufgrund dieser Import

import "." 

Sie haben Konflikt TabView von "QtQuick.Controls 1.2" und lokalen Ordner ""

+0

Ich habe den Namen geändert von meiner XML-Datei zu 'MyTabView.xml' und ruft' MyTabView {} 'im' main auf.xml' aber ich bekomme den gleichen Fehler 'MyTabView ist kein Typ' – bourne

+0

@bourne Warum verwenden Sie" xml "Erweiterung für Ihre Quelldateien? Es gibt nichts Ähnliches zwischen qml und xml. – QtRoS

2

Ich hatte ein ähnliches Problem.

qrc: AGview.qml: 8: 15: Agraph ist kein Typ

ich es gelöst: meiner ursprünglichen Code (in meinem main.cpp):

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

die arbeitende:

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

Ich denke, ohne den Schrägstrich es nicht im eigentlichen Ordner suchen.

+0

Ich hatte das gleiche Problem. Kennt jemand eine Erklärung dafür? – philipp

10

Haben Sie die Datei zu Ihren Ressourcen hinzugefügt?
Das Hinzufügen Ihrer MyTabView.qml zu Ihrem Projekt im selben Verzeichnis von main.qml ist nicht ausreichend.
Sie müssen Ihre QML-Datei in die Ressourcen (wahrscheinlich main.qrc/qml/) setzen, um sie bereitstellen zu lassen.
Der Editor von Qt Creator benötigt diese Aufnahme nicht, um Ihren Typ zu finden, daher wird kein Fehler angezeigt.

+0

Danke! Dies ist in keinem der von Qt gelieferten Beispiele enthalten! Das hat meinen Fall gelöst. –