QExtensionFactory Class Reference

[QtDesigner module]

该QExtensionFactory类允许你创建一个工厂,是能够使Qt Designer中自定义扩展的实例。More…

继承QObjectQAbstractExtensionFactory

Methods

  • __init__ (self, QExtensionManager parent = None)
  • QObject createExtension (self, QObject object, QString iid, QObject parent)
  • QObject extension (self, QObject object, QString iid)
  • QExtensionManager extensionManager (self)

Detailed Description

该QExtensionFactory类允许你创建一个工厂,是能够使Qt Designer中自定义扩展的实例。

In Qt Designer未创建的扩展,直到你需要它们。出于这个原因,实现自定义扩展时,您还必须创建一个QExtensionFactory ,即一个类,它能够让你的扩展的一个实例,并使用它注册Qt Designerextension manager

QExtensionManager类提供了扩展的管理设施, Qt Designer中。当一个扩展是必需的, Qt设计的extension manager将通过其所有已注册的工厂运行要求QExtensionFactory.createExtension( )对每一直到第一个是能够创造一个请求扩展选定对象,被发现。这家工厂将使这个扩展的实例。

有四种类型的可在Qt Designer中的扩展:QDesignerContainerExtensionQDesignerMemberSheetExtensionQDesignerPropertySheetExtensionQDesignerTaskMenuExtension。 Qt设计器的行为是一样的具有多页的容器,一个成员表,属性表或任务菜单中的延期申请是否相关。

您可以创建一个新的QExtensionFactory和重新实现QExtensionFactory.createExtension()函数。例如:

  1. [QObject]($docs-qobject.html) *ANewExtensionFactory.createExtension([QObject]($docs-qobject.html) *object,
  2. const [QString](qstring.html) &iid, [QObject]($docs-qobject.html) *parent) const
  3. {
  4. if (iid != Q_TYPEID([QDesignerContainerExtension]($docs-qdesignercontainerextension.html)))
  5. return 0;
  6. if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>
  7. (object))
  8. return new MyContainerExtension(widget, parent);
  9. return 0;
  10. }

或者您可以使用现有的工厂,扩大QExtensionFactory.createExtension( )函数,使工厂能够创建您的扩展也是如此。例如:

  1. [QObject]($docs-qobject.html) *AGeneralExtensionFactory.createExtension([QObject]($docs-qobject.html) *object,
  2. const [QString](qstring.html) &iid, [QObject]($docs-qobject.html) *parent) const
  3. {
  4. MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object);
  5. if (widget && (iid == Q_TYPEID([QDesignerTaskMenuExtension]($docs-qdesignertaskmenuextension.html)))) {
  6. return new MyTaskMenuExtension(widget, parent);
  7. } else if (widget && (iid == Q_TYPEID([QDesignerContainerExtension]($docs-qdesignercontainerextension.html)))) {
  8. return new MyContainerExtension(widget, parent);
  9. } else {
  10. return 0;
  11. }
  12. }

对于使用QExtensionFactory类的完整示例,请参见Task Menu Extension example。该示例显示了如何创建一个自定义的widget插件Qt Designer中,以及如何使用QDesignerTaskMenuExtension类的自定义项添加到Qt Designer中的任务菜单。


Method Documentation

  1. QExtensionFactory.__init__ (self, QExtensionManager parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个扩展工厂给定的parent

  1. QObject QExtensionFactory.createExtension (self, QObject object, QString iid, QObject parent)

[

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

创建由指定的延伸iid对于给定的object。扩展对象为指定的子创建parent

]($docs-qobject.html)

See also extension( ) 。

  1. QObject QExtensionFactory.extension (self, QObject object, QString iid)

从重新实现QAbstractExtensionFactory.extension( ) 。

返回由指定的扩展名iid对于给定的object

See also createExtension( ) 。

  1. QExtensionManager QExtensionFactory.extensionManager (self)

[

返回扩展工厂的扩展管理器。

]($docs-qextensionmanager.html)