QExtensionFactory Class Reference
[QtDesigner module]
该QExtensionFactory类允许你创建一个工厂,是能够使Qt Designer中自定义扩展的实例。More…
继承QObject和QAbstractExtensionFactory。
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 Designer的extension manager。
该QExtensionManager类提供了扩展的管理设施, Qt Designer中。当一个扩展是必需的, Qt设计的extension manager将通过其所有已注册的工厂运行要求QExtensionFactory.createExtension( )对每一直到第一个是能够创造一个请求扩展选定对象,被发现。这家工厂将使这个扩展的实例。
有四种类型的可在Qt Designer中的扩展:QDesignerContainerExtension,QDesignerMemberSheetExtension,QDesignerPropertySheetExtension和QDesignerTaskMenuExtension。 Qt设计器的行为是一样的具有多页的容器,一个成员表,属性表或任务菜单中的延期申请是否相关。
您可以创建一个新的QExtensionFactory和重新实现QExtensionFactory.createExtension()函数。例如:
[QObject]($docs-qobject.html) *ANewExtensionFactory.createExtension([QObject]($docs-qobject.html) *object,
const [QString](qstring.html) &iid, [QObject]($docs-qobject.html) *parent) const
{
if (iid != Q_TYPEID([QDesignerContainerExtension]($docs-qdesignercontainerextension.html)))
return 0;
if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*>
(object))
return new MyContainerExtension(widget, parent);
return 0;
}
或者您可以使用现有的工厂,扩大QExtensionFactory.createExtension( )函数,使工厂能够创建您的扩展也是如此。例如:
[QObject]($docs-qobject.html) *AGeneralExtensionFactory.createExtension([QObject]($docs-qobject.html) *object,
const [QString](qstring.html) &iid, [QObject]($docs-qobject.html) *parent) const
{
MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object);
if (widget && (iid == Q_TYPEID([QDesignerTaskMenuExtension]($docs-qdesignertaskmenuextension.html)))) {
return new MyTaskMenuExtension(widget, parent);
} else if (widget && (iid == Q_TYPEID([QDesignerContainerExtension]($docs-qdesignercontainerextension.html)))) {
return new MyContainerExtension(widget, parent);
} else {
return 0;
}
}
对于使用QExtensionFactory类的完整示例,请参见Task Menu Extension example。该示例显示了如何创建一个自定义的widget插件Qt Designer中,以及如何使用QDesignerTaskMenuExtension类的自定义项添加到Qt Designer中的任务菜单。
Method Documentation
QExtensionFactory.__init__ (self, QExtensionManager parent = None)
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个扩展工厂给定的parent。
QObject QExtensionFactory.createExtension (self, QObject object, QString iid, QObject parent)
[
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
创建由指定的延伸iid对于给定的object。扩展对象为指定的子创建parent。
]($docs-qobject.html)
QObject QExtensionFactory.extension (self, QObject object, QString iid)
从重新实现QAbstractExtensionFactory.extension( ) 。
返回由指定的扩展名iid对于给定的object。
See also createExtension( ) 。
QExtensionManager QExtensionFactory.extensionManager (self)
[
返回扩展工厂的扩展管理器。
]($docs-qextensionmanager.html)