class QDesignerCustomWidgetInterface#

QDesignerCustomWidgetInterface 允许 Qt Designer 访问和构建自定义小部件。 更多

摘要#

虚拟方法#

注意

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

详细描述#

警告

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

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

实现自定义小部件时,您必须子类化 QDesignerCustomWidgetInterface 以将您的控件暴露给 Qt Designer。例如,这是用于 Custom Widget Plugin 示例的插件声明,它使模拟时钟自定义小部件能够由 Qt 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 Designer 能够仅通过 QObject 指针查询支持哪些接口

在Qt Designer加载自定义控件插件后,它会调用接口的 initialize() 函数,以便设置可能需要的任何资源。这个函数使用一个 QDesignerFormEditorInterface 参数调用,为插件提供了一个通往所有 Qt Designer API 的入口。

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

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

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

此宏确保 Qt Designer 可以访问和构造自定义控件。没有这个宏,Qt Designer 没有办法使用它。

实现自定义控件插件时,您需要将其作为一个独立的库构建。如果要在同一个库中包含多个自定义控件插件,您还必须继承 QDesignerCustomWidgetCollectionInterface

警告

如果您的自定义控件插件包含QVariant属性,请注意,只有以下类型受到支持

  • QVariant::ByteArray

  • QVariant::Bool

  • QVariant::Color

  • QVariant::Cursor

  • QVariant::Date

  • QVariant::DateTime

  • QVariant::Double

  • QVariant::Int

  • QVariant::Point

  • QVariant::Rect

  • QVariant::Size

  • QVariant::SizePolicy

  • QVariant::String

  • QVariant::Time

  • QVariant::UInt

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

另请参阅

QDesignerCustomWidgetCollectionInterface 为 Qt Designer 创建自定义控件

codeTemplate()#
返回类型:

str

此函数是为未来由 Qt Designer 使用而保留的。

abstract createWidget(parent)#
参数:

父类QWidget

返回类型:

QWidget

返回一个新的自定义小部件实例,该实例具有给定的 parent

domXml()#
返回类型:

str

返回用于描述自定义小部件属性以供 Qt Designer 使用的 XML。

抽象group()#
返回类型:

str

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

抽象icon()#
返回类型:

QIcon

返回用于在 Qt Designer 的工具箱中代表自定义小部件的图标。

抽象includeFile()#
返回类型:

str

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

initialize(core)#
参数:

coreQDesignerFormEditorInterface

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

另请参阅

isInitialized()

抽象isContainer()#
返回类型:

bool

如果自定义小部件被设计为容器使用,则返回 true;否则返回 false。

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

isInitialized()#
返回类型:

bool

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

另请参阅

initialize()

抽象name()#
返回类型:

str

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

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

抽象toolTip()#
返回类型:

str

返回用于 Qt Designer 工具提示的自定义小部件的简短描述。

抽象whatsThis()
返回类型:

str

返回可以用于 Qt Designer 小部件“这是什么?”帮助的图形界面小部件描述。