- 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 的任务菜单添加自定义项。另请参阅
QDesignerDynamicPropertySheetExtension
QExtensionFactory
QExtensionManager
创建自定义小部件扩展- __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 的属性编辑器中可见;否则属性被隐藏。另请参阅