2016-06-27 15 views
0

Ich verwende Qt.createQmlObject(), um ein QML Objekt aus einer Datei zu erstellen. In dem Fall wird die Datei beschädigt ist, gibt QML eine Nachricht, die wie folgt aussieht:Catch QML-Fehlermeldung

Qt.createQmlObject(): failed to create object: qrc:/graphics/inline:5:2: Expected token} ' `

Ich mag würde die Nachricht, um fangen den Benutzer zu sagen, dass seine Datei beschädigt ist.

Ich versuche, das dritte Argument in der Qt.createQmlObject() zur Verfügung gestellt, aber ich verstehe nicht, wie es funktioniert. Das Wiki beschreibt ganz gut die Funktion aber nicht gibt kein Beispiel ausbeutet:

https://wiki.qt.io/QML_Dynamic_Objects#Creation_of_Dynamic_QML_Objects

Das dritte Argument eine Zeichenfolge als Dateinamen in der Fehlerberichterstattung in der Qt Creator IDE verwendet wird. Wenn beispielsweise ein Fehler in der geladenen QML-Zeichenfolge auftritt, wird er in der Datei mit dem Namen des Dateinamens als einer gemeldet. Im Aufruf muss der Dateiname als String von doppelten Anführungszeichen umgeben sein.

Antwort

4

Sie müssen "try-catch" -Block wie folgt verwenden:

try { 
     var newObject = Qt.createQmlObject('import QtQuick 2.0; Rectangle11 {color: "red"; width: 20; height: 20}', 
             this, 
             "dynamicSnippet1"); 
    } catch (error) { 
     print ("Error loading QML : ") 
     for (var i = 0; i < error.qmlErrors.length; i++) { 
      print("lineNumber: " + error.qmlErrors[i].lineNumber) 
      print("columnNumber: " + error.qmlErrors[i].columnNumber) 
      print("fileName: " + error.qmlErrors[i].fileName) 
      print("message: " + error.qmlErrors[i].message) 
     } 
    } 

Das im official documentation

beschrieben