PySide6.QtDesigner.QDesignerCustomWidgetInterface

class QDesignerCustomWidgetInterface

QDesignerCustomWidgetInterface 类使 Qt Widgets Designer 能够访问和构建自定义小部件。更多

概要

虚拟方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QDesignerCustomWidgetInterface 提供了一个带有接口的自定义小部件。该类包含一组必须被子类化的函数,以返回有关小部件的基本信息,例如其类名和头文件的名称。其他函数必须在加载插件时实现,并构建自定义小部件的实例以供 Qt Widgets Designer 使用。

在实现自定义小部件时,您必须子类化QDesignerCustomWidgetInterface以将您的小部件暴露给Qt Widgets Designer。例如,这是用于Custom Widget Plugin示例中的插件声明,该插件使Qt Widgets Designer能够使用模拟时钟自定义小部件:

class AnalogClockPlugin(QObject, QDesignerCustomWidgetInterface):

    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")
    Q_INTERFACES(QDesignerCustomWidgetInterface)
# public
    AnalogClockPlugin = explicit(QObject parent = None)
    bool isContainer() override
    bool isInitialized() override
    QIcon icon() override
    QString domXml() override
    QString group() override
    QString includeFile() override
    QString name() override
    QString toolTip() override
    QString whatsThis() override
    QWidget createWidget(QWidget parent) override
    def initialize(core):
# private
    initialized = False

请注意,类定义中唯一特定于此特定自定义小部件的部分是类名。此外,由于我们正在实现一个接口,我们必须确保使用Q_INTERFACES()宏将其告知元对象系统。这使得Qt Widgets Designer能够仅使用QObject指针通过qobject_cast()函数查询支持的接口。

在Qt Widgets Designer加载自定义小部件插件后,它会调用接口的initialize()函数,以使其能够设置可能需要的任何资源。此函数通过一个QDesignerFormEditorInterface参数调用,该参数为插件提供了访问Qt Widgets Designer所有API的入口。

Qt Widgets Designer 通过调用插件的 createWidget() 函数并传入合适的父部件来构造自定义部件的实例。插件必须构造并返回一个具有指定父部件的自定义部件实例。

使用Q_PLUGIN_METADATA()宏将您的自定义小部件插件导出到Qt小部件设计器。例如,如果一个名为libcustomwidgetplugin.so(在Unix上)或libcustomwidget.dll(在Windows上)的库包含一个名为MyCustomWidget的小部件类,我们可以通过在包含插件头文件的文件中添加以下行来导出它:

Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")

此宏确保Qt Widgets Designer能够访问和构造自定义小部件。如果没有此宏,Qt Widgets Designer将无法使用它。

在实现自定义小部件插件时,您将其构建为一个单独的库。如果您想在同一库中包含多个自定义小部件插件,您还必须子类化 QDesignerCustomWidgetCollectionInterface

警告

如果你的自定义小部件插件包含QVariant属性,请注意仅支持以下类型:

  • QVariant::ByteArray

  • QVariant::布尔值

  • QVariant::颜色

  • QVariant::Cursor

  • QVariant::日期

  • QVariant::DateTime

  • QVariant::Double

  • QVariant::Int

  • QVariant::Point

  • QVariant::Rect

  • QVariant::Size

  • QVariant::SizePolicy

  • QVariant::String

  • QVariant::时间

  • QVariant::UInt

有关使用QDesignerCustomWidgetInterface类的完整示例,请参见自定义小部件示例。该示例展示了如何为Qt Widgets Designer创建自定义小部件插件。

另请参阅

QDesignerCustomWidgetCollectionInterface 为Qt Widgets Designer创建自定义小部件

codeTemplate()
Return type:

字符串

此函数保留供Qt Widgets Designer将来使用。

abstract createWidget(parent)
Parameters:

父级QWidget

Return type:

QWidget

返回自定义小部件的新实例,带有给定的parent

domXml()
Return type:

字符串

返回用于描述自定义小部件属性到Qt小部件设计器的XML。

abstract group()
Return type:

字符串

返回自定义小部件所属组的名称。

abstract icon()
Return type:

QIcon

返回用于在Qt Widgets Designer的小部件框中表示自定义小部件的图标。

abstract includeFile()
Return type:

字符串

返回uic在创建自定义小部件代码时使用的包含文件的路径。

initialize(core)
Parameters:

核心QDesignerFormEditorInterface

初始化小部件以与指定的formEditor接口一起使用。

另请参阅

isInitialized()

abstract isContainer()
Return type:

布尔

如果自定义小部件旨在用作容器,则返回 true;否则返回 false。

大多数自定义小部件不用于容纳其他小部件,因此它们对此函数的实现将返回false,但自定义容器将返回true,以确保它们在Qt小部件设计器中正确运行。

isInitialized()
Return type:

布尔

如果小部件已初始化,则返回 true;否则返回 false。

另请参阅

initialize()

abstract name()
Return type:

字符串

返回由接口提供的自定义小部件的类名。

返回的名称必须与用于自定义小部件的类名相同。

abstract toolTip()
Return type:

字符串

返回一个简短的小部件描述,可以在Qt小部件设计器的工具提示中使用。

abstract whatsThis()
Return type:

字符串

返回一个描述,该描述可用于Qt Widgets Designer中的“这是什么?”帮助。