QDesignerContainerExtension Class Reference
[QtDesigner module]
该QDesignerContainerExtension类可以让你的网页添加到Qt Designer中的工作区中的自定义多页的容器。More…
通过继承QPyDesignerContainerExtension。
Methods
__init__ (self)
__init__ (self, QDesignerContainerExtension)
addWidget (self, QWidget widget)
int count (self)
int currentIndex (self)
insertWidget (self, int index, QWidget widget)
remove (self, int index)
setCurrentIndex (self, int index)
QWidget widget (self, int index)
Special Methods
__len__ (self)
Detailed Description
该QDesignerContainerExtension类可以让你的网页添加到Qt Designer中的工作区中的自定义多页的容器。
QDesignerContainerExtension用于创建自定义容器扩展提供了一个接口。容器扩展包括函数的集合的那个Qt Designer需要管理一个多页容器插件,且在容器的页的列表。
Warning:这是not在一般情况下,只有自定义容器的插件扩展multi-page容器。
要创建一个容器扩展,你的扩展类必须继承自两个QObject和QDesignerContainerExtension 。例如:
class MyContainerExtension : public [QObject]($docs-qobject.html),
public QDesignerContainerExtension
{
Q_OBJECT
Q_INTERFACES(QDesignerContainerExtension)
public:
MyContainerExtension(MyCustomWidget *widget,
[QObject]($docs-qobject.html) *parent = 0);
int count() const;
[QWidget]($docs-qwidget.html) *widget(int index) const;
int currentIndex() const;
void setCurrentIndex(int index);
void addWidget([QWidget]($docs-qwidget.html) *widget);
void insertWidget(int index, [QWidget]($docs-qwidget.html) *widget);
void remove(int index);
private:
MyCustomWidget *myWidget;
};
由于我们正在实现一个接口,我们必须确保它是由已知的元对象系统中使用Q_INTERFACES()宏。这使Qt Designer使用qobject_cast( )函数用什么来查询所支持的接口,但一QObject指针。
你必须重新实现几个功能,使Qt Designer管理自定义多页的容器控件:Qt Designer uses count( )来跟踪的页数在你的容器中,widget( )给定的索引在容器的页面列表在返回的页面,currentIndex( )返回选定的页面的列表索引。Qt Designer使用addWidget( )函数在给定页面添加到容器中,期待它附加到页面列表,而它预计insertWidget( )函数通过给定的索引处插入了一个给定页面添加到容器中。
In Qt Designer未创建的扩展,直到你需要它们。出于这个原因,你必须同时创建一个QExtensionFactory,即一个类,它能够让你的扩展的一个实例,并使用它注册Qt Designer的extension manager。
当一个容器扩展是必需的,Qt Designer的extension manager将通过其所有已注册的工厂运行要求QExtensionFactory.createExtension( )对每一直到第一个即能创建一个容器延伸,被找到。这家工厂将创建的扩展插件。
有扩展的四个可用的类型Qt Designer: QDesignerContainerExtension ,QDesignerMemberSheetExtension,QDesignerPropertySheetExtension和QDesignerTaskMenuExtension。Qt Designer的行为是一样的具有多页的容器,一个成员表,属性表或任务菜单中的延期申请是否相关。
该QExtensionFactory类提供了一个标准的扩展工厂,并且也可以用作用于定义扩展工厂的接口。您可以创建一个新的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))
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))) {
return new MyContainerExtension(widget, parent);
} else {
return 0;
}
}
对于使用QDesignerContainerExtension类的完整示例,请参见Container Extension example。该示例显示了如何创建一个自定义多页插件Qt Designer。
Method Documentation
QDesignerContainerExtension.__init__ (self)
QDesignerContainerExtension.__init__ (self, QDesignerContainerExtension)
QDesignerContainerExtension.addWidget (self, QWidget widget)
这种方法是抽象的,应在任何子类中重新实现。
将给定page到容器将其附加到页面的扩展名的列表。
See also insertWidget( )remove()和widget( ) 。
int QDesignerContainerExtension.count (self)
这种方法是抽象的,应在任何子类中重新实现。
返回容器中的页数。
int QDesignerContainerExtension.currentIndex (self)
这种方法是抽象的,应在任何子类中重新实现。
返回容器中的当前选择的页的索引。
See also setCurrentIndex( ) 。
QDesignerContainerExtension.insertWidget (self, int index, QWidget widget)
这种方法是抽象的,应在任何子类中重新实现。
将给定page到容器通过在给定的插入它index在页面的扩展名的列表。
See also addWidget( )remove()和widget( ) 。
QDesignerContainerExtension.remove (self, int index)
这种方法是抽象的,应在任何子类中重新实现。
移除网页在给定的index从页面的扩展名的列表。
See also addWidget()和insertWidget( ) 。
QDesignerContainerExtension.setCurrentIndex (self, int index)
这种方法是抽象的,应在任何子类中重新实现。
设置当前所选页面中的容器是网页在给定的index在页面的扩展名的列表。
See also currentIndex( ) 。
QWidget QDesignerContainerExtension.widget (self, int index)
[
这种方法是抽象的,应在任何子类中重新实现。
返回页面在给定的index在页面的扩展名的列表。
]($docs-qwidget.html)
See also addWidget()和insertWidget( ) 。
QDesignerContainerExtension.__len__ (self)