【Qt之·Qt Designer插件开发流程(Windows)】

系列文章目录



前言

Qt提供两种设计插件的API,可以用于扩展Qt 的功能。

  • 高级(high-level) API用于设计插件以扩展 Qt 的功能,例如定制数据库驱动、图像格式、文本编码、定制样式等,QtCreator 里大量采用了插件,单击Qt Creator的主菜单栏的"Help” → "About Plugins”菜单项,会显示Qt Creator里已经安装的各种插件。
  • 低级(low-level) API用于创建插件以扩展自己编写应用程序的功能,最常见的就是将自定义Widget 组件安装到 UI设计器里,用于窗口界面设计。

  本例程创建一个,但是采用创建 Qt Designer插件的方式来创建这个类,并将其安装到 UI设计器的组件面板里。


一、创建流程

  • 第 1 步: 设置插件项目的名称和保存路径,本实例设置项目名称为QSlideSwitch
  • 第 2 步:选择项目编译器,可以选择多个编译器,在编译时,再选择具体的编译器。但是实际上只有MSVC2015 32bit编译器是能用的。
    在这里插入图片描述
    在这里插入图片描述

注意: 使用Qt 创建的Widget插件,若要在Qt Creator 的UI 设计器里正常显示,编译插件的编译器版本必须和编译 Qt Creator 的版本一致。

  • 第3步:设置自定义QWidget类的名称,只需在左侧的Widget classes列表里设置类名,右侧就会自动设置缺省的文件名,这里添加一个类QSlideSwitch。还可以选择一个图标文件作为自定义组件在 UI 设计器组件面板里的显示图标。
    在这里插入图片描述

  • 第4步:显示和设置插件、资源文件名称。本实例缺省的插件名称是qslideswitchplugin,资源文件名称为 icons.qre,一般用缺省的即可。

  • 第5 步:完成设置,生成项目。
    在这里插入图片描述

    • QSlideSwitch.pro是插件项目的项目文件,用于实现插件的接口。
    • qslideswitchplugin.h 和 qslideswitchplugin.cpp 是插件的头文件和实现文件。
    • icons.qrc是插件项目的资源文件,存储了图标。
    • qslideswitch.pri 是包含在 QSlideSwitch.pro 项目中的一个项目文件,用于管理自定义组件类。
    • qslideswitch.h 和 qslideswitch.cpp 是自定义类QSlideSwitch的头文件和实现文件。

二、插件项目各文件的功能实现

1.QSlideSwitchPlugin

############ qslideswitchplugin.h
--------------------------------------------------------------------------------
#ifndef QSLIDESWITCHPLUGIN_H
#define QSLIDESWITCHPLUGIN_H

#include <QDesignerCustomWidgetInterface>

class QSlideSwitchPlugin : public QObject, public QDesignerCustomWidgetInterface
{
    Q_OBJECT
    Q_INTERFACES(QDesignerCustomWidgetInterface)
#if QT_VERSION >= 0x050000
    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")
#endif // QT_VERSION >= 0x050000

public:
    QSlideSwitchPlugin(QObject *parent = 0);

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

private:
    bool m_initialized;
};

#endif // QSLIDESWITCHPLUGIN_H
############ qslideswitchplugin.cpp
--------------------------------------------------------------------------------
#include "qslideswitch.h"
#include "qslideswitchplugin.h"

#include <QtPlugin>

QSlideSwitchPlugin::QSlideSwitchPlugin(QObject *parent)
    : QObject(parent)
{
    m_initialized = false;
}

void QSlideSwitchPlugin::initialize(QDesignerFormEditorInterface * /* core */)
{
    if (m_initialized)
  
  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值