Qt-自定义插件开发

Qt Designer 中自带的控件虽然能够在很大程度上满足我们日常的开发,但是当遇到一些比较特殊需求时,往往显得力不从心。 所以自定义插件的开发,并将其导入Qt的设计师中,这样可以像基本控件一样拖拽到UI界面中,同时也可以自定义一些属于插件的独有属性,直接在UI界面中配置,十分方便快捷。

接下来我将用自己在后一篇文章中开发的自定义的时间轴插件为例, 简单介绍一下创建自定义插件的过程和一些细节。

创建工程

createplugin_firststeps

接下来, 我以TimelinePlugin(下一篇我实现的插件为例),填写创建过程中的一些基本信息

createplugin_secondstep

源文件信息中填写一些控件类的名称

createplugin_threestep

这一部分填写的是对插件的描述, 比如所属于那个分组(这里的组写的是 Customise), 其实就是左侧控件归属于那个标签组, 工具提示这是什么 其实就是 toolTip()whatsThis()

designer_group

createplugin_fourstep.png

这里面其实是当插件被拖拽到UI界面中时,需要引用的xml文件内容

下一步中还有一个设置插件名称的部分, 填写好之后, 创建工程的部分就结束了。

部署

deploy_plugin

这里建议 Build 环节中, Release版本中添加额外的构建步骤, 如图所示, Make 参数install, 这样在编译过程中, 会将编译出的插件库复制到 Qt Designer 的插件目录下。

而添加这一步会生效的原因是在 pro 文件中添加了这2行代码, 声明需要复制的地址,和执行的条件, 这2行代码一般在创建工程时候默认生成

target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS    += target

其实这时候编译出来的插件库,给第三方提供头文件和库文件,别人是没办法直接使用的,还需要加一步特别重要的步骤, 添加导出符号

为了让插件在所有平台上正常工作,需要确保导出了Qt Designer所需要的符号。
插件类必须被Qt Designer加载的插件按顺序导出。QDESIGNER_WIDGET_EXPORT 宏必须被使用,或自己编译动态库导出文件。这里我建议使用Qt自带的QDESIGNER_WIDGET_EXPORT宏。

用法如下:

plguin_def

部署和一些导出的环节基本就结束了, 接下来简单尝试一些是否能够正常使用

使用

我简单在插件中添加一个 Label, 并给 Label 上显示为 TimelinePlugin, 同时创建一个 ShowPlugin 的工程, 里面就是只有一个空的mainwidow的文件, 在 Qt Designer 中将插件拖拽到 mainwidow.ui

test_plugin

test_pluginui

此外 ShowPlugin.pro 文件中需要配置插件的头文件位置, 以及链接插件库, 将编译好的 Timelineplugin.dll 提前移动到链接库的地址中, 如下图

test_pluginpro

test_pluginlibpath

使用的环节基本就这些,最后编译 ShowPlugin 工程,可以得到的结果图如下:

test_plugindemo