Qt Warning: QQmlComponent: Component is not ready
You should read and follow documentation.
What you do not check is that component.status
must be equal to Component.Ready
before calling to component.createObject
.
If the file somehow failed to load, as it does not parse correctly, component.status
will be equal to Component.Error
, and you should call errorString()
to get more information.
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, {} );
Anyway you should always assert component.status == Component.Ready
before calling createObject()
.
![Jay](https://i.stack.imgur.com/GaA88.jpg?s=256&g=1)
Jay
Professional curmudgeon. Tech blog: https://jaysprenkle.wordpress.com/
Updated on June 09, 2022Comments
-
Jay about 2 years
Is it possible to get Qt error messages when using dynamically created items?
I've installed a message handler to capture Qt output at run time:
qInstallMessageHandler( myMessageOutput );
I load a basic qml file into a QQuickView and it works fine. If there are errors in the qml source they're displayed in my log. If I dynamically create items and they contain errors it fails without any message.
I create the dynamic objects like this:
var component = Qt.createComponent( "config.qml" ); var dlg = component.createObject( parentId, {} );
The only error I receive is the following:
'qml\qqmlcomponent.cpp':845 function: 'QObject* QQmlComponentPrivate::beginCreate(QQmlContextData*)'|Qt Warning: QQmlComponent: Component is not ready
This error is written for any kind of problem in the qml it's trying to load.