使用动态创建的项目时是否可能获得Qt错误消息?
我已经安装了一个消息处理程序来在运行时捕获Qt输出:
qInstallMessageHandler( myMessageOutput );
Run Code Online (Sandbox Code Playgroud)
我将一个基本的qml文件加载到QQuickView中,它工作正常.如果qml源中存在错误,它们将显示在我的日志中.如果我动态创建项目并且它们包含错误,则它会在没有任何消息的情
我创建这样的动态对象:
var component = Qt.createComponent( "config.qml" );
var dlg = component.createObject( parentId, {} );
Run Code Online (Sandbox Code Playgroud)
我收到的唯一错误如下:
'qml\qqmlcomponent.cpp':845 function: 'QObject* QQmlComponentPrivate::beginCreate(QQmlContextData*)'|Qt Warning: QQmlComponent: Component is not ready
Run Code Online (Sandbox Code Playgroud)
此错误是针对它尝试加载的qml中的任何类型的问题编写的.
Arp*_*ius 23
您应该阅读并遵循文档.
你没有检查的是在打电话之前component.status
必须等于.Component.Ready
component.createObject
如果文件以某种方式无法加载,因为它没有正确解析,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, {} );
Run Code Online (Sandbox Code Playgroud)
无论如何,你应该component.status == Component.Ready
在打电话之前断言createObject()
.