QDesignerCustomWidgetInterface 类

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

头文件 #include <QDesignerCustomWidgetInterface>
CMakefind_package(Qt6 REQUIRED COMPONENTS Designer)
target_link_libraries(mytarget PRIVATE Qt6::Designer)
qmakeQT += designer

公共函数

虚拟~QDesignerCustomWidgetInterface()
虚拟 QStringcodeTemplate() const
虚拟 QWidget *createWidget(QWidget *parent) = 0
虚拟 QStringdomXml() const
虚拟 QStringgroup() const = 0
虚拟 QIconicon() const = 0
虚拟 QStringincludeFile() const = 0
虚拟 voidinitialize(QDesignerFormEditorInterface *formEditor)
虚拟 boolisContainer() const = 0
虚拟 boolisInitialized() const
虚拟 QStringname() const = 0
虚拟 QStringtoolTip() const = 0
虚拟 QStringwhatsThis() const = 0

详细描述

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

在实现自定义小部件时,必须派生 QDesignerCustomWidgetInterface 以将小部件公开给 Qt Designer。例如,这是用于 自定义小部件插件 示例中插件的声明,该示例允许使用模拟时钟自定义小部件。

class AnalogClockPlugin : public QObject, public QDesignerCustomWidgetInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")
    Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
    explicit AnalogClockPlugin(QObject *parent = nullptr);

    bool isContainer() const override;
    bool isInitialized() const override;
    QIcon icon() const override;
    QString domXml() const override;
    QString group() const override;
    QString includeFile() const override;
    QString name() const override;
    QString toolTip() const override;
    QString whatsThis() const override;
    QWidget *createWidget(QWidget *parent) override;
    void initialize(QDesignerFormEditorInterface *core) override;

private:
    bool initialized = false;
};

请注意,类定义的特定部分是类名。此外,由于我们正在实现一个接口,我们必须确保使用 Q_INTERFACES() 宏使其为元对象系统所知。这可以使用 QObject 指针来查询所支持的接口,从而使 Qt Designer 可以使用 qobject_cast() 函数。

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 创建自定义窗口小部件

成员函数文档

[virtual constexpr noexcept] QDesignerCustomWidgetInterface::~QDesignerCustomWidgetInterface()

销毁自定义窗口小部件接口。

[virtual] QString QDesignerCustomWidgetInterface::codeTemplate() const

此函数是为将来的 Qt Designer 使用保留的。

[pure virtual] QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent)

返回具有给定 parent 的新自定义窗口小部件实例。

[virtual] QString QDesignerCustomWidgetInterface::domXml() const

返回用于描述自定义窗口小部件属性给 Qt Designer 的 XML。

[pure virtual] QString QDesignerCustomWidgetInterface::group() const

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

[纯虚函数] QIcon QDesignerCustomWidgetInterface::icon() const

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

[纯虚函数] QString QDesignerCustomWidgetInterface::includeFile() const

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

[虚函数] void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor)

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

另请参阅 isInitialized()。

[纯虚函数] bool QDesignerCustomWidgetInterface::isContainer() const

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

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

[虚函数] bool QDesignerCustomWidgetInterface::isInitialized() const

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

另请参阅 initialize()。

[纯虚函数] QString QDesignerCustomWidgetInterface::name() const

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

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

[纯虚函数] QString QDesignerCustomWidgetInterface::toolTip() const

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

[纯虚函数] QString QDesignerCustomWidgetInterface::whatsThis() const

返回可供 Qt Designer 用于“这是什么?”帮助的自定义部件的描述。

宏文档

QDESIGNER_WIDGET_EXPORT

该宏用于定义自定义部件,以确保它们被正确导出,用于与 Qt Designer 一起使用。

在某些平台上,Qt Designer 创建新部件所需的符号被构建系统从插件中移除,使其无法使用。使用此宏确保在那些平台上保留符号,并且在其他平台上没有副作用。

例如,自定义部件插件 示例使用以下声明导出自定义部件类

class QDESIGNER_WIDGET_EXPORT AnalogClock : public QWidget
{
    Q_OBJECT
    ...
};

另请参阅 为 Qt Designer 创建自定义部件

© 2024 Qt公司有限公司。本文档中包含的贡献文档的版权属于其各自的拥有者。提供的文档在自由软件基金会发布的GNU自由文档许可证版本1.3的条款下获得许可:http://www.gnu.org/licenses/fdl.html。Qt及其相关标志是芬兰及全球其他地区的Qt公司商标。商标。所有其他商标归其各自的拥有者所有。