当使用动态创建的项目时,是否有可能获得Qt错误消息?
我已经安装了一个消息处理程序来在运行时捕获Qt输出:
qInstallMessageHandler( myMessageOutput );我将一个基本的qml文件加载到一个QQuickView中,它工作得很好。如果qml源代码中有错误,它们会显示在我的日志中。如果我动态创建条目,并且它们包含错误,那么它将失败,并且不会显示任何消息。
我创建的动态对象如下:
var component = Qt.createComponent( "config.qml" );
var dlg = component.createObject( parentId, {} );我收到的唯一错误如下:
'qml\qqmlcomponent.cpp':845 function: 'QObject* QQmlComponentPrivate::beginCreate(QQmlContextData*)'|Qt Warning: QQmlComponent: Component is not ready这个错误是针对它试图加载的qml中的任何类型的问题而编写的。
发布于 2013-08-03 04:54:36
你应该阅读并遵循documentation。
您没有检查的是,在调用component.createObject之前,component.status必须等于Component.Ready。
如果文件由于某种原因无法加载,因为它不能正确解析,那么component.status将等于Component.Error,您应该调用errorString()来获取更多信息。
var component = Qt.createComponent( "config.qml" );
if( component.status != Component.Ready )
{
if( component.status == Component.Error )
console.debug("Error:"+ component.errorString() );
return; // or maybe throw
}
var dlg = component.createObject( parentId, {} );无论如何,您应该在调用createObject()之前始终断言component.status == Component.Ready。
https://stackoverflow.com/questions/18024207
复制相似问题