自定义QT控件(插件)流程
来源:互联网 发布:c语言 fft 编辑:程序博客网 时间:2024/05/16 01:36
标题:自定义QT控件(插件)流程
作者:kagula
时间:2015-03-30
环境:
[1]VS2010SP1
[2]QT5.41,安装路径为“C:\Qt\5.4\msvc2010_opengl”
[3]Qt5 Addins 1.24(for Visual Studio Plugin)
关键词:
QT Widget
内容概要:
介绍开发QT插件(自定义QT Widget)DLL文件的流程。
正文
第一步:新建项目"kagulaQt541Plugin"项目
[Qt5 Projects]->[Qt5 Designer Plugin],向导为我们新建了两个class。
class“KagulaQT541Plugin”,继承了QObject和QDesignerCustomWidgetInterface两个class。
只能有一个这样的类,这个类告诉QT Designer如何加载这个控件。
class“KagulaQT541”,继子 QWidget,是我们要编写的自定义Widget。
第二步:
参考资料[1]我们编写自己的第一个自定义Widget。
修改kagula541.h文件,添加下面的头文件
#include <QtDesigner/QDesignerExportWidget>
在这个头文件里,在“class”关键词后面"QDESIGNER_WIDGET_EXPORT"宏,这里你的项目才能导出这个class,
而QT App(调用者)才能通过这个宏调用“Plugin DLL”这个class的实现。
第三步:引用自定义插件
新建调用者项目,在调用者项目中,
[3-1]添加,头文件搜索路径。
[3-2]添加,库文件搜索路径,Debug对应Debug,Release对应Release。
第四步:部署与运行
QT插件项目以Release方式编译,在“D:\workspace\KagulaQT541Plugin\Win32\Release”目录下生成“KagulaQT541Plugin.dll”
把这个文件复制到“C:\Qt\5.4\msvc2010_opengl\plugins\designer”目录,启动“QT designer”[帮助]->[关于插件]可以看到插件已经正常加载。
如果复制“Debug”版本插件DLL,QT designer装载你的插件DLL会失败!
更方便的方法是,打开插件project
右键单击项目名称,调出properties对话框(要在Release模式下面)
[Configuration Properties]->[BuildEvents]->[Post Build Event]修改
[Command Line]属性
echo on
copy "$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName).dll" "C:\Qt\5.4\msvc2010_opengl\plugins\designer"
echo off
[Description]属性
Copy plugin dll to Qt5 plugin directory...
备注:
[a]自定义Widget一般需要添加属性,如何使用属性参考资料[2]。
[b]修改插件位置,参考资料[3]。
[c]调用者要进入插件的断点,需要满足两个条件[c1]插件的project同调用者在同一个solution里[c2]插件源码路径同调用者源码路径在同一级solution路径下。
参考资料
[1]《Custom Widget Plugin Example》
http://doc.qt.io/qt-5/qtdesigner-customwidgetplugin-example.html
[2]《Integrating a Custom Widget into Qt Designer》
如何为自定义widget添加属性示例
http://www.ics.com/blog/integrating-custom-widget-qt-designer
[3]《Qt loads plugins of release version on a debug build - Mac only》
https://forum.qt.io/topic/1268/qt-loads-plugins-of-release-version-on-a-debug-build-mac-only
作者:kagula
时间:2015-03-30
环境:
[1]VS2010SP1
[2]QT5.41,安装路径为“C:\Qt\5.4\msvc2010_opengl”
[3]Qt5 Addins 1.24(for Visual Studio Plugin)
关键词:
QT Widget
内容概要:
介绍开发QT插件(自定义QT Widget)DLL文件的流程。
正文
第一步:新建项目"kagulaQt541Plugin"项目
[Qt5 Projects]->[Qt5 Designer Plugin],向导为我们新建了两个class。
class“KagulaQT541Plugin”,继承了QObject和QDesignerCustomWidgetInterface两个class。
只能有一个这样的类,这个类告诉QT Designer如何加载这个控件。
class“KagulaQT541”,继子 QWidget,是我们要编写的自定义Widget。
第二步:
参考资料[1]我们编写自己的第一个自定义Widget。
修改kagula541.h文件,添加下面的头文件
#include <QtDesigner/QDesignerExportWidget>
在这个头文件里,在“class”关键词后面"QDESIGNER_WIDGET_EXPORT"宏,这里你的项目才能导出这个class,
而QT App(调用者)才能通过这个宏调用“Plugin DLL”这个class的实现。
第三步:引用自定义插件
新建调用者项目,在调用者项目中,
[3-1]添加,头文件搜索路径。
[3-2]添加,库文件搜索路径,Debug对应Debug,Release对应Release。
第四步:部署与运行
QT插件项目以Release方式编译,在“D:\workspace\KagulaQT541Plugin\Win32\Release”目录下生成“KagulaQT541Plugin.dll”
把这个文件复制到“C:\Qt\5.4\msvc2010_opengl\plugins\designer”目录,启动“QT designer”[帮助]->[关于插件]可以看到插件已经正常加载。
如果复制“Debug”版本插件DLL,QT designer装载你的插件DLL会失败!
更方便的方法是,打开插件project
右键单击项目名称,调出properties对话框(要在Release模式下面)
[Configuration Properties]->[BuildEvents]->[Post Build Event]修改
[Command Line]属性
echo on
copy "$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName).dll" "C:\Qt\5.4\msvc2010_opengl\plugins\designer"
echo off
[Description]属性
Copy plugin dll to Qt5 plugin directory...
备注:
[a]自定义Widget一般需要添加属性,如何使用属性参考资料[2]。
[b]修改插件位置,参考资料[3]。
[c]调用者要进入插件的断点,需要满足两个条件[c1]插件的project同调用者在同一个solution里[c2]插件源码路径同调用者源码路径在同一级solution路径下。
参考资料
[1]《Custom Widget Plugin Example》
http://doc.qt.io/qt-5/qtdesigner-customwidgetplugin-example.html
[2]《Integrating a Custom Widget into Qt Designer》
如何为自定义widget添加属性示例
http://www.ics.com/blog/integrating-custom-widget-qt-designer
[3]《Qt loads plugins of release version on a debug build - Mac only》
https://forum.qt.io/topic/1268/qt-loads-plugins-of-release-version-on-a-debug-build-mac-only
0 0
- 自定义QT控件(插件)流程
- Qt自定义控件(插件法)
- Qt自定义控件(三)
- Qt自定义控件(插件)并添加到QtDesigher
- Qt编写自定义控件插件路过的坑及注意事项
- Qt编写自定义控件及插件的使用
- Qt编写自定义控件插件路过的坑及注意事项
- Qt编写自定义插件
- 自定义Qt插件
- 自定义控件开发流程
- 自定义控件编写流程
- 自定义控件的流程
- 自定义控件编写流程
- 自定义组合控件流程
- Qt之自定义控件(开关按钮)
- Qt之自定义控件(开关按钮)
- QT学习笔记(5):自定义控件
- Qt之自定义控件(开关按钮)
- 统计难题
- 文件流
- JS创建类和对象
- matlab 命令
- 社説 20150330 法テラス拡充案 DV被害を未然に防止したい
- 自定义QT控件(插件)流程
- 乔布斯简介及其十大经典语录
- Android中图片过大造成内存溢出,OOM(OutOfMemory)异常解决方法
- jQuery学习之prop和attr的区别
- 在C#中主线程和子线程如何实现互相传递数据
- 社説 20150330 インドネシア 海洋安保で戦略的協力強めよ
- Windows桌面共享中一些常见的抓屏技术
- 递归实现有序链表(不需要使用两个指针)
- 应届生关于工作的困扰。