首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt警告: QQmlComponent:组件未就绪

Qt警告: QQmlComponent:组件未就绪
EN

Stack Overflow用户
提问于 2013-08-03 02:56:30
回答 1查看 17.6K关注 0票数 6

当使用动态创建的项目时,是否有可能获得Qt错误消息?

我已经安装了一个消息处理程序来在运行时捕获Qt输出:

代码语言:javascript
复制
qInstallMessageHandler( myMessageOutput );

我将一个基本的qml文件加载到一个QQuickView中,它工作得很好。如果qml源代码中有错误,它们会显示在我的日志中。如果我动态创建条目,并且它们包含错误,那么它将失败,并且不会显示任何消息。

我创建的动态对象如下:

代码语言:javascript
复制
var component = Qt.createComponent( "config.qml" );
var dlg = component.createObject( parentId, {} );

我收到的唯一错误如下:

代码语言:javascript
复制
'qml\qqmlcomponent.cpp':845 function: 'QObject* QQmlComponentPrivate::beginCreate(QQmlContextData*)'|Qt Warning: QQmlComponent: Component is not ready

这个错误是针对它试图加载的qml中的任何类型的问题而编写的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-03 04:54:36

你应该阅读并遵循documentation

您没有检查的是,在调用component.createObject之前,component.status必须等于Component.Ready

如果文件由于某种原因无法加载,因为它不能正确解析,那么component.status将等于Component.Error,您应该调用errorString()来获取更多信息。

代码语言:javascript
复制
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

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18024207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档