Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QDeclarativeComponent类封装了QML组件定义。More...
继承QObject。
该QDeclarativeComponent类封装了QML组件定义。
组件是可重用的,封装QML元素具有定义良好的接口。他们往往在定义Component Files。
一个QDeclarativeComponent实例可以从QML文件中创建。例如,如果有一个main.qml文件是这样的:
import QtQuick 1.0 Item { width: 200 height: 200 }
下面的代码加载这个QML文件作为一个组件,使用创建该组件的一个实例create( ) ,然后查询Item的width价值:
QDeclarativeEngine *engine = new QDeclarativeEngine; QDeclarativeComponent component(engine, QUrl.fromLocalFile("main.qml")); QObject *myObject = component.create(); QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(myObject); int width = item->width(); // width = 200
如果传递给QDeclarativeComponent URL是一个网络资源,或者QML文档引用的网络资源,将QDeclarativeComponent具有获取网络数据之前,它能够创建对象。在这种情况下, QDeclarativeComponent将有Loading status。应用程序将不得不等待,直到该组件是Ready打电话之前QDeclarativeComponent.create( ) 。
下面的示例演示如何加载从网络资源中的QML文件。创建QDeclarativeComponent后,它测试组件是否被加载。如果是,它连接到QDeclarativeComponent.statusChanged( )信号,否则调用continueLoading()方法直接。需要注意的是QDeclarativeComponent.isLoading( )可能是假的网络组件,如果该组件已被缓存,并立即准备就绪。
MyApplication.MyApplication() { // ... component = new QDeclarativeComponent(engine, QUrl("http://www.example.com/main.qml")); if (component->isLoading()) QObject.connect(component, SIGNAL(statusChanged(QDeclarativeComponent.Status)), this, SLOT(continueLoading())); else continueLoading(); } void MyApplication.continueLoading() { if (component->isError()) { qWarning() << component->errors(); } else { QObject *myObject = component->create(); } }
指定的加载状态QDeclarativeComponent。
Constant | Value | Description |
---|---|---|
QDeclarativeComponent.Null | 0 | This QDeclarativeComponent没有数据。通话loadUrl()或setData()添加QML内容。 |
QDeclarativeComponent.Ready | 1 | This QDeclarativeComponent准备就绪,create( )可以被调用。 |
QDeclarativeComponent.Loading | 2 | This QDeclarativeComponent正在加载网络数据。 |
QDeclarativeComponent.Error | 3 | 发生了错误。通话errors( )来获取{列表QDeclarativeError{ } }错误。 |
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
创建QDeclarativeComponent没有数据,并给它指定engine和parent。与设定的数据setData( ) 。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
创建QDeclarativeComponent从给定的fileName并给它指定parent和engine。
See also loadUrl( ) 。
这种方法提供了更高级的控制组件实例的创建。一般情况下,程序员应该使用QDeclarativeComponent.create()来创建一个组件。
此组件创建一个对象实例。返回0,如果创建失败。context指定一个要在其中创建对象实例的上下文。
When QDeclarativeComponent构造一个实例,它发生在三个步骤:
QDeclarativeComponent.beginCreate ( )不同于QDeclarativeComponent.create() ,因为它仅执行步骤1 。QDeclarativeComponent.completeCreate( )必须被调用来完成步骤2和3 。
使用附加属性时,将信息传达给一个实例化的组件,因为它可以让它们的初始值进行配置之前,物业绑定生效,这突破点有时是有用的。
这种方法提供了更高级的控制组件实例的创建。一般情况下,程序员应该使用QDeclarativeComponent.create()来创建一个组件。
完成组件创建开始QDeclarativeComponent.beginCreate( ) 。
此组件创建一个对象实例。返回0,如果创建失败。context指定一个要在其中创建对象实例的上下文。
If context为0 (默认值) ,它会在引擎的创建实例root context。
返回QDeclarativeContext该组件被创建。这是仅适用于直接从QML创建的组件。
返回的最后一个编译期间发生的错误的列表或创建操作。如果返回空列表isError( )未设置。
返回True如果status()==QDeclarativeComponent.Error。
返回True如果status()==QDeclarativeComponent.Loading。
返回True如果status()==QDeclarativeComponent.Null。
返回True如果status()==QDeclarativeComponent.Ready。
加载QDeclarativeComponent从所提供的url。
确保所提供的URL是充分和正确的,尤其是借QUrl.fromLocalFile( )装载从本地文件系统中的文件时。
设置QDeclarativeComponent使用给定的QMLdata。如果url被提供,它是用来设置该组件的名称和提供一个基本路径由该元件得到解决的项目。
这是该信号的默认超载。
每当发射组件的加载进度的变化。progress将介于0.0 (无负载)和1.0 (成品)目前的进展。
这是该信号的默认超载。
每当发射组件的状态变化。status将新的状态。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |