捕获QML错误消息

Gré*_*rel 2 qt try-catch qml

Qt.createQmlObject()用来QML从文件创建对象。在文件损坏的情况下,QML输出一条如下所示的消息:

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

我想捕获该消息,以便告诉用户他的文件已损坏。

我正在尝试使用中提供的第三个参数,Qt.createQmlObject()但我不知道它是如何工作的。Wiki很好地描述了该功能,但没有给出利用它的任何示例:

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

第三个参数是在Qt Creator IDE中的错误报告中用作文件名的字符串。例如,如果在加载的QML字符串中遇到错误,则在文件名中将该错误报告为一个。在调用文件名时,字符串必须用双引号引起来。

mbg*_*033 7

您需要使用“ try-catch”块,如下所示:

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)
        }
    }
Run Code Online (Sandbox Code Playgroud)

官方文档中对此进行了描述