Qt自定义插件编程小结
qt自定义组件开发步骤演示。以下所有步骤的前提是自己先编译Qtcreator源码,最好生成release版的QtCreator,否则自定义的插件嵌入QtCreator会失败!!!(这个网上教程很多)
Step1:新建工程,选择其他项目->Qt4设计师自定义控件
Step2:填写工程名,然后一路点击下一步,直至Step3
Step3:填写控件类名,点击下一步
Step4:若装了版本控制Git工具的话,最好选上,以便后期修改,点击完成即可成功创建工程
Step5:利用控件提升法。
Ø 删除上图黄色矩形框中的HelloWorld类的两个文件(helloworld.h和helloworld.cpp)
Ø 再重新给工程添加一个同名的HelloWorld类,基类选择QWidget类,如下图所示
点击下一步生成新的工程,如下图所示
Ø 接着修改helloworldplugin.h里的头文件根据Qt相应版本修改,我这里的版本是Qt5.6.1 MinGW,所以修改成如上图所示的红色矩形中的头文件
Ø 再接着在helloworld.h的头文件里添加头文件
#include <QtUiPlugin/QDesignerExportWidget>
Ø 最后在helloworld.h头文件里的类名前加上宏QDESIGNER_WIDGET_EXPORT
如下图所示:
Step6:此时你就可以根据需求开发你想要的自定义插件了,这里之所以利用提升法来做最主要的是可以利用QtCreator的原生控件来辅助自定义插件开发,提高生产力。举一个简单的例子来说明自定义插件的使用,如下图示:拖一个pushbutton,定制一个字幕为Hello Qt的按钮插件 ,然后选择release模式运行工程,会生成库文件helloworldplugin.dll和libhelloworldplugin.a。
Step7:接下来将生成的helloworldplugin.dll文件放入Qt的安装路径里,我的是C:\Qt\Qt5.6.1\5.6\mingw49_32\plugins\designer
如下图示:
现在只需要将生成的dll放到C:\Qt\Qt5.6.1\5.6\mingw49_32\plugins\designer路径下,不仅Qtcreator中,Qt Designer中都可以成功嵌入自定义插件!!!
如下图示Qt 设计师:
Qt Creator中,新建Qt 工程,测试插件的使用,如下图示:
Step7:自定义插件的使用
将自定义控件的helloworld.h头文件、helloworldplugin.dll文件、libhelloworldplugin.a(msvc编译器为.lib)文件复制出来,在根目录下分别创建include和lib文件夹,将头文件放到include目录,将libxxx.a文件放到lib目录,在项目的pro文件中,增加两行 :
INCLUDEPATH += $$PWD/include
LIBS += $$PWD/lib/libhelloworldplugin.a
最好将helloworldplugin.dll放到release里,以便工程移植。

Qt自定义插件编程小结的更多相关文章
- Qt之自定义插件(for Qt Designer)
之前Blog里面有关于QWT的编译.配置.使用的文章,分别是在VS与Creator下进行的. QWT编译.配置.使用(VS2010 + Qt5.1.0). QWT编译.配置.使用(Qt Creator ...
- GDI+编程小结
GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负 ...
- 分享在winform下实现模块化插件编程-优化版
上一篇<分享在winform下实现模块化插件编程>已经实现了模块化编程,但我认为不够完美,存在以下几个问题: 1.IAppContext中的CreatePlugInForm方法只能依据完整 ...
- jQuery 插件编程精讲与技巧
适应的读者: 1.有一定的jquery编程基础但是想在技能上有所提升的人 2.前端开发的程序员 3.对编程感兴趣的学生 为什么要学习jquery插件的编写? 为什么要学习jquery插件的编写?相信这 ...
- .Net插件编程模型:MEF和MAF[转载]
.Net插件编程模型:MEF和MAF MEF和MAF都是C#下的插件编程框架,我们通过它们只需简单的配置下源代码就能轻松的实现插件编程概念,设计出可扩展的程序.这真是件美妙的事情! 今天抽了一点时间, ...
- Adams 2013自定义插件方法zz
1.Adams插件介绍 Adams的高级模块(如Controls控制模块.Vibration振动模块.Durability耐久性模块等)是以插件的形式集成在Adams软件中.通过Adams提供的插件管 ...
- [2019BUAA软工助教]结对编程 - 小结
[2019BUAA软工助教]结对编程 - 小结 一.评分规则 博客 博客共五十分 序号 要求 分值 1 在文章开头给出Github项目地址 1 2 在开始实现程序之前,在下述PSP表格记录下你估计将在 ...
- 初探Delphi中的插件编程
前言 我写Delphi程序是从MIS系统入门的,开始尝试子系统划分的时候采用的是MDI窗体的结构.随着系统功能的扩充,不断有新的子系统加入系统中,单个工程会变得非常大,每次做一点修改都要重新编译,单个 ...
- Qt自定义窗口部件
QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin) 改进法 1.改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和Hexs ...
随机推荐
- Eclipse导入工程后,XDoclet错误:Missing library: xdoclet-1.2.1.jar. Select the home directory for XDoclet
这几天在使用Open Health Tools的OpenXDS工程,在导入Eclipse后,出现下面的错误: 遂google之,在网上找到了答案.答案网址为http://blog.v-s-f.co.u ...
- RK3288 修改浏览器默认主页和书签
path:packages/apps/Browser/res/values/strings.xml 修改浏览器默认主页: <!-- The default homepage. --> &l ...
- JAVA-Unit04: SQL(高级查询)
Unit04: SQL(高级查询) 查看SMITH的上司在那个城市工作? SELECT e.ename,m.ename,d.loc FROM emp e,emp m,dept d WHERE e.mg ...
- scp 远程复制
1. 上传本地文件到远程机器指定目录 命令: scp /opt/soft/nginx-0.5.38.tar.gz root@192.168.120.204:/opt/soft/scptest 上传本地 ...
- [Z]shell变量详解
原文:http://www.cnblogs.com/barrychiao/archive/2012/10/22/2733210.html 1 shell变量基础shell变量是一种很“弱”的变量,默认 ...
- spring-boot-actuator健康监控
#健康监控 management.security.enabled=false health.mail.enabled =false http://localhost:54001/autoconfig ...
- django网页的分页功能,大家如果有疑问请留言
url文件 from django.contrib import admin from django.conf.urls import url from app01 import views urlp ...
- JAVA压缩 解压缩zip 并解决linux下中文乱码
1. [代码][Java]代码 1:再压缩前,要设置linux模式, 需要使用第三方ant-1.6.5.jar 如果是文件目录,则ZipEntry zipEntry=new ZipEntry(b ...
- 修改SecureCRT终端的Home和End功能键。
SecureCRT真是个不错的ssh客户端工具,但在使用时发现跟自己的一些使用习惯不符合,例如home.end.pageup.pagedown和delete等键. 默认情况下一些按键的功能如下: pa ...
- eclipse egit 更新未提交文件的方法
问题 以前一直在项目中使用SVN..感觉真的很好用,不管是切分支,合并分支,编辑冲突,还是更新代码什么的都感觉很方便...现在新公司项目里使用git...我自己虽然用过,但是多人合作一直没用过.所以遇 ...