您的位置:首页 > 编程语言 > Qt开发

如何在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文件夹后重新进行构建.

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt 自定义 widget 控件