Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QExtensionFactory类允许你创建一个工厂,是能够使Qt Designer中自定义扩展的实例。More...
继承QObject和QAbstractExtensionFactory。
该QExtensionFactory类允许你创建一个工厂,是能够使Qt Designer中自定义扩展的实例。
In Qt Designer未创建的扩展,直到你需要它们。出于这个原因,实现自定义扩展时,您还必须创建一个QExtensionFactory ,即一个类,它能够让你的扩展的一个实例,并使用它注册Qt Designer的extension manager。
该QExtensionManager类提供了扩展的管理设施, Qt Designer中。当一个扩展是必需的, Qt设计的extension manager将通过其所有已注册的工厂运行要求QExtensionFactory.createExtension( )对每一直到第一个是能够创造一个请求扩展选定对象,被发现。这家工厂将使这个扩展的实例。
有四种类型的可在Qt Designer中的扩展:QDesignerContainerExtension,QDesignerMemberSheetExtension,QDesignerPropertySheetExtension和QDesignerTaskMenuExtension。 Qt设计器的行为是一样的具有多页的容器,一个成员表,属性表或任务菜单中的延期申请是否相关。
您可以创建一个新的QExtensionFactory和重新实现QExtensionFactory.createExtension()函数。例如:
QObject *ANewExtensionFactory.createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerContainerExtension)) return 0; if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*> (object)) return new MyContainerExtension(widget, parent); return 0; }
或者您可以使用现有的工厂,扩大QExtensionFactory.createExtension( )函数,使工厂能够创建您的扩展也是如此。例如:
QObject *AGeneralExtensionFactory.createExtension(QObject *object, const QString &iid, QObject *parent) const { MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object); if (widget && (iid == Q_TYPEID(QDesignerTaskMenuExtension))) { return new MyTaskMenuExtension(widget, parent); } else if (widget && (iid == Q_TYPEID(QDesignerContainerExtension))) { return new MyContainerExtension(widget, parent); } else { return 0; } }
对于使用QExtensionFactory类的完整示例,请参见Task Menu Extension example。该示例显示了如何创建一个自定义的widget插件Qt Designer中,以及如何使用QDesignerTaskMenuExtension类的自定义项添加到Qt Designer中的任务菜单。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个扩展工厂给定的parent。
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
创建由指定的延伸iid对于给定的object。扩展对象为指定的子创建parent。
See also extension( ) 。
从重新实现QAbstractExtensionFactory.extension( ) 。
返回由指定的扩展名iid对于给定的object。
See also createExtension( ) 。
返回扩展工厂的扩展管理器。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |