PySide6.QtDesigner.QDesignerContainerExtension¶
- class QDesignerContainerExtension¶
QDesignerContainerExtension
类允许您在 Qt Widgets Designer 的工作区中向自定义多页容器添加页面。更多…概要¶
方法¶
def
__init__()
虚拟方法¶
def
addWidget()
def
canAddWidget()
def
canRemove()
def
count()
def
currentIndex()
def
insertWidget()
def
remove()
def
widget()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QDesignerContainerExtension
提供了一个用于创建自定义容器扩展的接口。容器扩展由一组Qt Widgets Designer需要管理多页容器插件的函数和容器页面的列表组成。警告
这不是一个用于容器插件的扩展,仅适用于自定义的多页面容器。
要创建一个容器扩展,您的扩展类必须同时继承自QObject和
QDesignerContainerExtension
。例如:class MyContainerExtension(QObject, public QDesignerContainerExtension Q_OBJECT Q_INTERFACES(QDesignerContainerExtension) # public MyContainerExtension(MyCustomWidget widget, parent = 0) count = int() widget = QWidget(int index) currentIndex = int() def setCurrentIndex(index): def addWidget(widget): def insertWidget(index, widget): def remove(index): # private myWidget = MyCustomWidget()
由于我们正在实现一个接口,我们必须确保使用Q_INTERFACES()宏将其告知元对象系统。这使得Qt Widgets Designer能够仅使用QObject指针通过qobject_cast()函数查询支持的接口。
你必须重新实现几个函数以使Qt Widgets Designer能够管理一个自定义的多页面容器小部件:Qt Widgets Designer使用
count()
来跟踪容器中的页面数量,使用widget()
返回容器页面列表中给定索引处的页面,并使用currentIndex()
返回所选页面的列表索引。Qt Widgets Designer使用addWidget()
函数将给定页面添加到容器中,期望它被追加到页面列表中,同时它期望insertWidget()
函数通过在给定索引处插入来将给定页面添加到容器中。在Qt Widgets Designer中,扩展在需要时才会被创建。因此,您还必须创建一个
QExtensionFactory
,即一个能够创建您的扩展实例的类,并使用Qt Widgets Designer的extension manager
进行注册。当需要容器扩展时,Qt Widgets Designer 的
extension manager
将遍历所有已注册的工厂,为每个工厂调用createExtension()
,直到找到第一个能够创建容器扩展的工厂。然后,该工厂将为插件创建扩展。Qt Widgets Designer 中有四种可用的扩展类型:
QDesignerContainerExtension
、QDesignerMemberSheetExtension
、QDesignerPropertySheetExtension
和QDesignerTaskMenuExtension
。无论请求的扩展是与多页容器、成员表、属性表还是任务菜单相关联,Qt Widgets Designer 的行为都是相同的。QExtensionFactory
类提供了一个标准的扩展工厂,也可以用作自定义扩展工厂的接口。你可以创建一个新的QExtensionFactory
并重新实现createExtension()
函数。例如:QObject ANewExtensionFactory.createExtension(QObject object, QString iid, QObject parent) if iid != Q_TYPEID(QDesignerContainerExtension): return 0 if (MyCustomWidget widget = qobject_cast<MyCustomWidget> (object)) return MyContainerExtension(widget, parent) return 0
或者你可以使用现有的工厂,扩展
createExtension()
函数,使工厂也能够创建容器扩展。例如:QObject AGeneralExtensionFactory.createExtension(QObject object, QString iid, QObject parent) widget = MyCustomWidget(object) if widget and (iid == Q_TYPEID(QDesignerTaskMenuExtension)): return MyTaskMenuExtension(widget, parent) elif widget and (iid == Q_TYPEID(QDesignerContainerExtension)): return MyContainerExtension(widget, parent) else: return 0
有关使用
QDesignerContainerExtension
类的完整示例,请参见容器扩展示例。该示例展示了如何为Qt Widgets Designer创建一个自定义的多页面插件。另请参阅
QExtensionFactory
QExtensionManager
创建自定义小部件扩展- __init__()¶
通过将给定的
page
添加到扩展的页面列表中,将其添加到容器中。- abstract canAddWidget()¶
- Return type:
布尔
返回是否可以添加小部件。这决定了添加上下文菜单选项以添加或插入页面是否启用。
对于具有单个固定页面的容器,例如 QScrollArea 或 QDockWidget,这应该返回 false。
另请参阅
- abstract canRemove(index)¶
- Parameters:
索引 – int
- Return type:
布尔
返回给定
index
处的小部件是否可以被移除。这决定了是否启用移除当前页面的上下文菜单选项。对于具有单个固定页面的容器,例如 QScrollArea 或 QDockWidget,这应该返回 false。
另请参阅
- abstract count()¶
- Return type:
整数
返回容器中的页数。
- abstract currentIndex()¶
- Return type:
整数
返回容器中当前选定页面的索引。
另请参阅
通过将给定的
page
插入到扩展页面列表中的指定index
,将其添加到容器中。另请参阅
- abstract remove(index)¶
- Parameters:
索引 – int
从扩展的页面列表中移除给定
index
处的页面。- abstract setCurrentIndex(index)¶
- Parameters:
索引 – int
将容器中当前选定的页面设置为扩展程序页面列表中给定
index
处的页面。另请参阅
返回扩展页面列表中给定
index
处的页面。