2016-08-08 64 views
1

Wenn ich versuche, das QtCharts Modul meine QML-Dateien zu importieren y die gleiche Warnmeldung immer erhalten:QML Import QtCharts Modulfehler

„Ergebnis nicht funktioniert Importe: file: C:/.... Modul "QtCharts" ist nicht installiert“

ich bin mit Open Source QtCreator 4.0.3 mit Qt 5.7.0.

Ich habe den Ordner QtCharts im Pfad: C:\Qt\5.7\mingw53_32\qml

Ich habe auch den Ordnerpfad mit der Eigenschaft in der .pro-Datei enthalten:

QML2_IMPORT_PATH: C:\Qt\5.7\mingw53_32\qml 

Was bin ich?

Hier ist ein einfacher Testcode:

// QtChartsTest.pro

TEMPLATE = app 

QT += qml quick 
QT += charts 

CONFIG += c++11 

SOURCES += main.cpp 

RESOURCES += qml.qrc 

# Additional import path used to resolve QML modules in Qt Creator's code model 

QML2_IMPORT_PATH = C:\Qt\5.7\mingw53_32\qml 


# Default rules for deployment. 
include(deployment.pri) 

// Main.cpp

#include <QGuiApplication> 
#include <QQmlApplicationEngine> 

int main(int argc, char *argv[]) 
{ 
    QGuiApplication app(argc, argv); 

    QQmlApplicationEngine engine; 
    engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 

    return app.exec(); 
} 

// Main.qml

import QtQuick 2.7 
import QtQuick.Window 2.2 
import QtCharts 2.1 

Window { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 

    Text { 
     text: qsTr("Hello World") 
     anchors.centerIn: parent 
    } 
} 
+0

Bitte zeigen Sie die Import-Zeile aus dem Code. Übrigens sollte es funktionieren, ohne den Importpfad zu setzen. – folibis

+0

Ich habe gerade das gleiche Problem und renne die gleiche Version von Qt wie Sie selbst. Hast du es gelöst? Wenn ja, wäre es hilfreich zu wissen, wie. –

Antwort

0

Ich war auf einem ähnlichen Problem fest und war frustriert Da ich von Qt's Dokumentation zu diesem Thema gehört habe, werde ich meine Methode zur Lösung meiner eigenen Probleme hier für die Nachwelt beschreiben.

Ich bin mir nicht sicher über die genaue Ursache Ihres Problems, aber ich kann Ihnen einen Vorschlag für die Fehlerbehebung vorschlagen.

Fügen Sie in Ihrer main.cpp die folgende Zeile hinzu. qDebug()<<engine.importPathList();

So wird Ihre Haupt

sein
#include <QGuiApplication> 
#include <QQmlApplicationEngine> 
#include <QDebug> 

int main(int argc, char *argv[]) 
{ 
    QGuiApplication app(argc, argv); 
    QQmlApplicationEngine engine; 
    qDebug()<<engine.importPathList(); 
    engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 

    return app.exec(); 
} 

Dies wird die komplette Liste der Include-Pfade enthalten. Wenn Sie nicht sehen, der Pfad enthalten aufgelistet dort können Sie hinzufügen, indem Sie die folgende Zeile hinzu:

engine.addImportPath(directory);

wo „Verzeichnis“ ist ein QString in das Verzeichnis aufzunehmen.

Mein Verständnis ist, dass die QML2_IMPORT_PATH Variable nur zur Laufzeit und nicht zur Kompilierzeit gilt, was bedeutet, dass QtCreator den Pfad nicht sieht, wenn es kompiliert. engine.addImportPath(directory); fügt andererseits den Pfad vor dem Start der qml-Engine hinzu (und damit die ersten qml-Importanweisungen)

Ich sage nicht, dass dies der beste Weg ist, um Ihr Problem zu lösen, aber es hat mir geholfen, mein Problem zu lösen .