- class QDesignerPropertySheetExtension#
QDesignerPropertySheetExtension类允许您操作在 Qt Designer 的属性编辑器中显示的小部件属性。 更多…概述#
方法#
def
__init__()
虚拟方法#
def
count()def
hasReset()def
indexOf()def
isAttribute()def
isChanged()def
isEnabled()def
isVisible()def
property()def
propertyGroup()def
propertyName()def
reset()def
setAttribute()def
setChanged()def
setProperty()def
setVisible()
备注:
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译中的问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建一个工单来告诉我们。
详细说明链接到此处
警告:
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QDesignerPropertySheetExtension提供了一组函数,通常用于查询窗口小部件的属性,并在属性编辑器中操纵属性的显示。例如propertySheet = None manager = formEditor.extensionManager() propertySheet = qt_extension<QDesignerPropertySheetExtension*>(manager, widget) index = propertySheet.indexOf("margin") propertySheet.setProperty(index, 10) propertySheet.setChanged(index, True) del propertySheet
请注意,如果您使用
setProperty()函数改变了属性的值,撤销栈将不会被更新。为了确保属性的值可以通过撤销栈来撤销,必须使用setProperty()函数,或者它的伙伴函数setWidgetProperty()。在实现自定义小部件插件时,Qt Designer 当前
QDesignerFormEditorInterface对象的指针(在上述示例中为formEditor)由initialize()函数的参数提供。可以通过使用
qt_extension()函数查询 Qt Designer 的扩展管理器来检索属性表或任何其他扩展。当您想要释放扩展时,只需删除指针即可。所有小部件都有一个默认属性表,用于向 Qt Designer 的属性编辑器填充(即使用 Q_PROPERTY() 宏定义的)小部件的属性。但是,
QDesignerPropertySheetExtension还提供了一种创建自定义属性表扩展的接口。请牢记以下限制
Qt Designer 使用
QDesignerPropertySheetExtension来喂给属性编辑器。每次在其工作区中选择一个小部件时,Qt Designer 将查询小部件的属性表扩展。如果选中的小部件实现了属性表扩展,则该扩展将覆盖默认属性表。对于某些属性,属性表使用的数据类型是包含额外信息但不直接是 Qt 数据类型的自定义 QVariant 类型。例如,这是枚举、标志、图标、像素图和字符串的情况。
Qt Designer 的属性编辑器没有针对使用 Q_DECLARE_METATYPE() 声明的自定义类型的 Q_PROPERTY 类型的处理实现。
要创建属性表扩展,必须使得您的扩展类从 QObject 和
QDesignerPropertySheetExtension继承。然后,由于我们正在实现一个接口,我们必须确保使用 Q_INTERFACES() 宏使其对元对象系统可见。class MyPropertySheetExtension(QObject, public QDesignerPropertySheetExtension Q_OBJECT Q_INTERFACES(QDesignerPropertySheetExtension) # public ...
这使得 Qt Designer 能够通过 qobject_cast() 使用一个 QObject 指针来查询支持的接口。
在 Qt Designer 中,扩展只能在需要时创建。因此,在实现属性表扩展时,您还需要创建一个
QExtensionFactory,即一个能够创建你的扩展实例的类,并使用 Qt Designer 的extension manager进行注册。当需要属性表扩展时,Qt Designer 的
extension manager会遍历所有已注册的工厂,对每个调用createExtension()直到找到第一个能够为选定的小部件创建属性表扩展的工厂。然后,该工厂将创建扩展实例。如果没有找到这样的工厂,Qt Designer 将使用默认属性表。Qt Designer 中有四种可用的扩展类型:
QDesignerContainerExtension、QDesignerMemberSheetExtension、QDesignerPropertySheetExtension和QDesignerTaskMenuExtension。无论请求的扩展是与多页容器、成员表、属性表还是任务菜单关联,Qt Designer 的行为都是相同的。QExtensionFactory类提供了一个标准的扩展工厂,也可以用作自定义扩展工厂的接口。你可以创建一个新的QExtensionFactory并重新实现createExtension()函数。例如QObject ANewExtensionFactory.createExtension(QObject object, QString iid, QObject parent) if iid != Q_TYPEID(QDesignerPropertySheetExtension): return 0 if (MyCustomWidget widget = qobject_cast<MyCustomWidget> (object)) return MyPropertySheetExtension(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(QDesignerPropertySheetExtension)): return MyPropertySheetExtension(widget, parent) else: return 0
关于使用扩展类的完整示例,请参阅 任务菜单扩展示例 。该示例展示了如何为 Qt Designer 创建自定义小部件插件,以及如何使用
QDesignerTaskMenuExtension类向 Qt Designer 的任务菜单添加自定义项。另请参阅
QDesignerDynamicPropertySheetExtensionQExtensionFactoryQExtensionManager创建自定义小部件扩展- __init__()#
- 抽象 count()#
- 返回类型:
int
返回选定小部件的属性数量。
- 抽象 hasReset(index)#
- 参数:
index – int
- 返回类型:
bool
如果指定的
index位置上的属性在 Qt Designer 的属性编辑器中有重置按钮,则返回 true,否则返回 false。- 抽象 indexOf(name)#
- 参数:
name – str
- 返回类型:
int
返回给定属性
name的索引。另请参阅
- 抽象 isAttribute(index)#
- 参数:
index – int
- 返回类型:
bool
如果给定
index位置的属性是一个属性,该属性将被从 UI 文件中 排除,则返回 true,否则返回 false。另请参阅
- 抽象 isChanged(index)#
- 参数:
index – int
- 返回类型:
bool
如果给定
index位置上的属性值与其默认值不同,则返回 true,否则返回 false。另请参阅
- 抽象 isEnabled(index)#
- 参数:
index – int
- 返回类型:
bool
如果给定
index位置的属性在 Qt Designer 的属性编辑器中被启用,则返回 true,否则返回 false。另请参阅
- 抽象 isVisible(index)#
- 参数:
index – int
- 返回类型:
bool
如果指定的
index在 Qt Designer 的属性编辑器中可见,则返回 true,否则返回 false。另请参阅
- 抽象 property(index)#
- 参数:
index – int
- 返回类型:
对象
返回指定
index的属性值。- 抽象 propertyGroup(index)#
- 参数:
index – int
- 返回类型:
字符串
返回指定
index的属性所属的组。Qt Designer 的属性编辑器支持属性组,即相关属性的部分。属性可以使用
setPropertyGroup()函数与组相关联。任何属性默认组是其定义的类的名称。例如,QObject::objectName 属性显示在 QObject 属性组中。- 抽象 propertyName(index)#
- 参数:
index – int
- 返回类型:
字符串
返回指定
index的属性名称。另请参阅
- 抽象 reset(index)#
- 参数:
index – int
- 返回类型:
bool
将指定
index的属性值重置为默认值。如果能找到默认值,则返回 true,否则返回 false。- abstract setAttribute(index, b)#
- 参数:
index – int
b – bool
如果
attribute为真,则给定index的属性将成为一个属性,并将在 UI 文件中 排除;否则,它将被包含。另请参阅
- abstract setChanged(index, changed)#
- 参数:
index – int
changed – bool
根据
changed参数设置给定index的属性是否与默认值不同。另请参阅
- abstract setProperty(index, value)#
- 参数:
index – int
value – object
设置给定
index的属性值。警告:
如果您使用此函数更改属性的值,则不会更新撤销堆栈。为确保可以使用撤销堆栈回滚属性的值,您必须使用
setProperty()函数或其配对函数setWidgetProperty()来替换。- abstract setPropertyGroup(index, group)#
- 参数:
index – int
group - 字符串
将给定索引处的属性组设置为
group。将属性与组相关联使它出现在属性编辑器中该组的部分中。任何属性的默认属性组都是定义该类的名称。例如,QObject::objectName 属性出现在 QObject 属性组中。
- abstract setVisible(index, b)#
- 参数:
index – int
b – bool
如果
visible为真,则给定索引处的属性在 Qt Designer 的属性编辑器中可见;否则属性被隐藏。另请参阅