qt自定义组件开发步骤演示以下所有步骤的前提是自己先编译Qtcreator源码,最好生成release版的QtCreator,否则自定义的插件嵌入QtCreator会失败!!!(这个网上教程很多)

Step1:新建工程,选择其他项目->Qt4设计师自定义控件

Step2:填写工程名,然后一路点击下一步,直至Step3

Step3:填写控件类名,点击下一步

Step4:若装了版本控制Git工具的话,最好选上,以便后期修改,点击完成即可成功创建工程

Step5:利用控件提升法。

Ø 删除上图黄色矩形框中的HelloWorld类的两个文件(helloworld.hhelloworld.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.dlllibhelloworldplugin.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自定义插件编程小结的更多相关文章

  1. Qt之自定义插件(for Qt Designer)

    之前Blog里面有关于QWT的编译.配置.使用的文章,分别是在VS与Creator下进行的. QWT编译.配置.使用(VS2010 + Qt5.1.0). QWT编译.配置.使用(Qt Creator ...

  2. GDI+编程小结

    GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负 ...

  3. 分享在winform下实现模块化插件编程-优化版

    上一篇<分享在winform下实现模块化插件编程>已经实现了模块化编程,但我认为不够完美,存在以下几个问题: 1.IAppContext中的CreatePlugInForm方法只能依据完整 ...

  4. jQuery 插件编程精讲与技巧

    适应的读者: 1.有一定的jquery编程基础但是想在技能上有所提升的人 2.前端开发的程序员 3.对编程感兴趣的学生 为什么要学习jquery插件的编写? 为什么要学习jquery插件的编写?相信这 ...

  5. .Net插件编程模型:MEF和MAF[转载]

    .Net插件编程模型:MEF和MAF MEF和MAF都是C#下的插件编程框架,我们通过它们只需简单的配置下源代码就能轻松的实现插件编程概念,设计出可扩展的程序.这真是件美妙的事情! 今天抽了一点时间, ...

  6. Adams 2013自定义插件方法zz

    1.Adams插件介绍 Adams的高级模块(如Controls控制模块.Vibration振动模块.Durability耐久性模块等)是以插件的形式集成在Adams软件中.通过Adams提供的插件管 ...

  7. [2019BUAA软工助教]结对编程 - 小结

    [2019BUAA软工助教]结对编程 - 小结 一.评分规则 博客 博客共五十分 序号 要求 分值 1 在文章开头给出Github项目地址 1 2 在开始实现程序之前,在下述PSP表格记录下你估计将在 ...

  8. 初探Delphi中的插件编程

    前言 我写Delphi程序是从MIS系统入门的,开始尝试子系统划分的时候采用的是MDI窗体的结构.随着系统功能的扩充,不断有新的子系统加入系统中,单个工程会变得非常大,每次做一点修改都要重新编译,单个 ...

  9. Qt自定义窗口部件

    QtDesigner自定义窗口部件有两种方法:改进法(promotion)和插件法(plugin)   改进法   1.改进法之前,要先写好子类化QSpinBox后的HexspinBox.h和Hexs ...

随机推荐

  1. [欢乐赛]班服 状压DP

    班服 (shirt.pas/.c/.cpp) 时间限制:1s:内存限制 128MB 题目描述: 要开运动会了,神犇学校的n个班级要选班服,班服共有100种样式,编号1~100.现在每个班都挑出了一些样 ...

  2. nested exception is com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1109 > 1024

    MySQL的一个系统参数:max_allowed_packet >mysql -u root -p //root登录 1. 查看系统参数:show VARIABLES like '%max_al ...

  3. MySql命令集合

    1.mysql命令用户连接数据库 mysql命令格式: mysql -h主机地址 -u用户名 -p用户密码 (1) 连接到本机上的MYSQL 首先打开DOS窗口,然后进入目录mysql\bin,再键入 ...

  4. Python web框架 Tornado(一)基础学习

    概述 Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了 ...

  5. 深入理解ceph-disk运行机制

    谷忠言 一,背景 目前项目所用的ceph集群内部的一个节点, 一般需要管理大约十块硬盘左右的数据存储空间,外加一到两块ssd组成的journal空间.Ceph要求每个osd对应的数据盘挂载到特定的目录 ...

  6. Tkinter Message

    Python GUI - Tkinter Message(消息):这个小工具提供了一个多和不可编辑的对象,显示文本,自动断行和其内容的理由.   这个小工具提供了一个多和不可编辑的对象,显示文本,自动 ...

  7. SVN版本控制系统最佳实践

    第1章SVN介绍及应用场景 1.1什么是SVN(Subversion) Svn(subversion)是近年来崛起非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个跨平台的开源的版本控制系统. ...

  8. win8下ctrl+alt+down失效问题

    最近换win8系统后用myeclipse发现这个用得最多快捷键居然不能用了. 百度后的确是显卡的快捷键冲突,但禁用显卡快捷键后仍然无效,把eclipse换成其他的不能忍. 所以把显卡快捷键换了就可以了 ...

  9. Dijkstra算法的另一种证明

    按:今天看Tanenbaum的计算机网络时讲到了Dijkstra算法.关于算法的正确性,<算法导论>给出了严格的证明.CLRS的证明基于一个通用的框架,非常清晰.今天只是随意想想是否有其他 ...

  10. Halcon学习之三:有关图像通道的函数(R是三通道,B是1通道,G二通道),排列顺序BGR

    黑白摄像机会返回每个像素所对应的能量采用结果,这些结果组成了一幅单通道灰度值图像,而对于RGB彩色摄像机,它将返回每个像素所对应的三个采样结果,也就是一幅三通道图像.下面这些是与图像通道有关的函数: ...