如何在Qt工程中正确地引用用户自定义控件
2016-01-17 22:15
477 查看
在Qt Creator里正确引用自定义控件. 现总结如下:
由于windows版的Qt Creator使用微软VC编译器编译, 所以当在Qt Creator下使用mingw 编译器编译自定义控件并将生成的dll文件复制粘贴至Qt Creator插件目录下后, 重启Qt Creator后在QtDesigner的控件列表中无法显示自定义控件. 解决办法有两种:
方法一: 下载Qt Creator源代码,然后使用mingw编译器重新编译mingw版本的Qt Creator.
方法二: 安装 微软VC 编译器, 然后在QtCreator中通过配置使用微软VC编译器重新编译生成自定义控件.
如何在Qt工程中正确地引用用户自定义控件:
1) 通过Qt Creator向导创建自定义控件工程.
2) 将自定义控件工程使用的编译器配置为与当前Qt Creator被编译时使用的编译器一致(MingW 或 微软VC编译器).
3) 默认情况下自定义控件工程并不将自定义控件接口暴露出来, 通过在自定义控件类头文件的类声明中增加QDESIGNER_WIDGET_EXPORT宏, 来将自定义控件类的接口暴露出来. 要使用该宏还要在自定义类的头文件中添加: #include <QtDesigner/QtDesigner> 例如:
#ifndef MYWIDGET6_H
#define MYWIDGET6_H
#include <QtDesigner/QtDesigner>
#include<QWidget>
class QDESIGNER_WIDGET_EXPORT MyWidget6 :public QWidget
{
Q_OBJECT
public:
MyWidget6(QWidget *parent = 0);
};
#endif
4) 将自定义控件工程配置为debug和release , 然后编译生成库文件, 如果是微软Vc编译器分别生成这两个配置相应版本的dll 和 lib文件共四个,如果是MingW编译器则生成dll 和 lib*.a四个文件. 以下以微软Vc编译器情况进行说明.
5) 将release版的dll复制粘贴至QtCreator插件文件夹中.
6) 在Qt Creator 中创建名为test1的测试工程准备调用自定义控件.
7) 在test1工程文件夹中建立Lib文件夹(文件夹名可以随意) , 将上述自定义控件dll和lib四个文件拷贝到该文件夹.
8) 在工程目录树的工程名节点点右键---->添加库---->外部库 , 选择release版的lib文件,设置工程引用自定义控件库. 此时test1的 .pro工程文件中自动生成了同时引用debug 版 和 release版自定控件库的配置代码.分别用于运行模式和调试模式.
9) 此时工程目录树中仍然无法看到自定义控件库四个文件, 工程名节点点右键---->Add Existing Directory将四个库文件添加到工程目录树中.
10) 复制粘贴自定义控件的 .h 头文件到test1工程, 并将该文件中的QDESIGNER_WIDGET_EXPORT宏 以及#include <QtDesigner/QtDesigner> 删除, 之后设置工程引用该头文件, 此时工程目录树中显示了该头文件.
11) 在test1工程中打开.ui界面文件,此时如果发现Qt Designer的控件列表中没有出现自定义控件,则: 在Qt Creator顶部菜单中点击 工具--->Form Editor--->About Qt designer Plugins--->点击刷新按钮, 此时QtDesigner将发现用户自定义控件.
12) 将自定义控件拖拽到ui界面中,开始正常使用自定义控件.
13) 如果编译构建test1工程时, 发生连接错误,则删除debug 和 release文件夹后重新进行构建.
由于windows版的Qt Creator使用微软VC编译器编译, 所以当在Qt Creator下使用mingw 编译器编译自定义控件并将生成的dll文件复制粘贴至Qt Creator插件目录下后, 重启Qt Creator后在QtDesigner的控件列表中无法显示自定义控件. 解决办法有两种:
方法一: 下载Qt Creator源代码,然后使用mingw编译器重新编译mingw版本的Qt Creator.
方法二: 安装 微软VC 编译器, 然后在QtCreator中通过配置使用微软VC编译器重新编译生成自定义控件.
如何在Qt工程中正确地引用用户自定义控件:
1) 通过Qt Creator向导创建自定义控件工程.
2) 将自定义控件工程使用的编译器配置为与当前Qt Creator被编译时使用的编译器一致(MingW 或 微软VC编译器).
3) 默认情况下自定义控件工程并不将自定义控件接口暴露出来, 通过在自定义控件类头文件的类声明中增加QDESIGNER_WIDGET_EXPORT宏, 来将自定义控件类的接口暴露出来. 要使用该宏还要在自定义类的头文件中添加: #include <QtDesigner/QtDesigner> 例如:
#ifndef MYWIDGET6_H
#define MYWIDGET6_H
#include <QtDesigner/QtDesigner>
#include<QWidget>
class QDESIGNER_WIDGET_EXPORT MyWidget6 :public QWidget
{
Q_OBJECT
public:
MyWidget6(QWidget *parent = 0);
};
#endif
4) 将自定义控件工程配置为debug和release , 然后编译生成库文件, 如果是微软Vc编译器分别生成这两个配置相应版本的dll 和 lib文件共四个,如果是MingW编译器则生成dll 和 lib*.a四个文件. 以下以微软Vc编译器情况进行说明.
5) 将release版的dll复制粘贴至QtCreator插件文件夹中.
6) 在Qt Creator 中创建名为test1的测试工程准备调用自定义控件.
7) 在test1工程文件夹中建立Lib文件夹(文件夹名可以随意) , 将上述自定义控件dll和lib四个文件拷贝到该文件夹.
8) 在工程目录树的工程名节点点右键---->添加库---->外部库 , 选择release版的lib文件,设置工程引用自定义控件库. 此时test1的 .pro工程文件中自动生成了同时引用debug 版 和 release版自定控件库的配置代码.分别用于运行模式和调试模式.
9) 此时工程目录树中仍然无法看到自定义控件库四个文件, 工程名节点点右键---->Add Existing Directory将四个库文件添加到工程目录树中.
10) 复制粘贴自定义控件的 .h 头文件到test1工程, 并将该文件中的QDESIGNER_WIDGET_EXPORT宏 以及#include <QtDesigner/QtDesigner> 删除, 之后设置工程引用该头文件, 此时工程目录树中显示了该头文件.
11) 在test1工程中打开.ui界面文件,此时如果发现Qt Designer的控件列表中没有出现自定义控件,则: 在Qt Creator顶部菜单中点击 工具--->Form Editor--->About Qt designer Plugins--->点击刷新按钮, 此时QtDesigner将发现用户自定义控件.
12) 将自定义控件拖拽到ui界面中,开始正常使用自定义控件.
13) 如果编译构建test1工程时, 发生连接错误,则删除debug 和 release文件夹后重新进行构建.
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- flex 控件的重要属性
- Delphi控件ListView的属性及使用方法详解
- web下载的ActiveX控件自动更新
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- C#实现自定义双击事件
- WinForm实现自定义右下角提示效果的方法
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- MFC中动态创建控件以及事件响应实现方法
- MFC自定义消息的实现方法
- WinForm自定义函数FindControl实现按名称查找控件
- C#实现ProperTyGrid自定义属性的方法
- Android控件之ProgressBar用法实例分析
- php自定义错误处理用法实例
- ThinkPHP中自定义目录结构的设置方法
- WinForm拖拽控件生成副本的解决方法
- ASP.NET动态添加用户控件的方法