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 ...
随机推荐
- django 网站 Hello world
环境搭建 1.python2.7,python3.x均可以使用, 2.直接pip install django或者去下载whl文件安装 3.用eclipse和pycharm均可 开始 1.进入一个目录 ...
- GDB调试字符数组时指针和数组区别的体现
测试ftell函数时发现报错,先贴源码 // File Name: ftell.c #include <stdio.h> #include <stdlib.h> int mai ...
- 算法提高 P1001【大数乘法】
当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法.具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过8位,然后把它们相乘的结果 ...
- (转)Linq DataTable的修改和查询
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- MUI 支付宝支付接入
沙箱测试地址:https://openhome.alipay.com/platform/appDaily.htm 1资源下载地址:https://docs.open.alipay.com/54/106 ...
- Cassandra 的启动和初始化
Cassandra常用命令 Cassandra启动过程详解[原创] Cassandra 的入口 CassandraDaemon 作为Cassandra的入口,做了以下几件事: load configu ...
- Mac运维安装软件
Maccrt软件 sudo spctl --master-disable 打开软件,复制到app,按照sn.txt输入即可 sudo spctl --master-enable crt快捷键crtl ...
- Navicat use HTTP Tunnel
Apply OS: Windows, macOS, Linux Apply Navicat Product: Navicat for MySQL, Navicat for PostgreSQL, Na ...
- FastClick
处理移动端click事件300毫秒延迟.FastClick 是一个简单,易于使用的js库用于消除在移动浏览器上触发click事件与一个物理Tap(敲击)之间的300延迟. 1.为什么会延迟? 从点击屏 ...
- azkaban平台的使用
最近接触一些大数据的测试,有些hadoop/spark任务在服务器测试不太方便,会放到azkaban上跑 简单写下azkaband的使用流程:包括任务的上传和提交任务到hadoop集群 一 登陆azk ...