我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字符串中遇到错误,则在文件名中将该错误报告为一个。在调用文件名时,字符串必须用双引号引起来。
您需要使用“ 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)
官方文档中对此进行了描述