qt 自定义控件的使用以及遇到的问题

 这篇文章会详细说明qt自定义控件的创建->使用过程。

qt自定义控件会以插件的形式导入,导入成功后可以直接在工程ui中拖拽。

一、自定义控件插件的编译

1、打开qtcreator,新建工程项目,选择其他项目->Qt4设计师自定义控件。

2、输入工程名称(插件编译的工程名),这里以View_label为例

3、选择编译器

注意:选择的编译器必须是对应qt版本的,比如我的qt版本是Qt5.9.2 MSVC 2015 32位版本,那么我们就需要选择MSVC2015 32位编译器。

4、创建控件类(控件的操作,样式等需要在这个类中处理)

5、确定插件的名称(导入的时候需要用到,可以使用自动生成的)

6、修改控件程序

完成后,我们进入view_label.h中稍微修改一下。

#ifndef VIEW_LABEL_H
#define VIEW_LABEL_H

#include <QWidget>
#include <QtUiPlugin/QDesignerExportWidget>
#include <QPushButton>
class QDESIGNER_WIDGET_EXPORT View_label : public QWidget
{
    Q_OBJECT

public:
    View_label(QWidget *parent = 0);
    QPushButton     *m_button;
};

#endif

这里新建一个按键。

然后进入到view_label.cpp中,把按键实例化,构造函数中加入

m_button = new QPushButton(this);

注意:可以往里面加入信号,那么就可以在调用的时候绑定触发信号。

7、编译

 

然后把工程设为release模式,qmake ,然后构建项目。

之后可以在输出的文件路径/release/文件夹中找到view_labelplugin.lib与view_labelplugin.dll

复制粘贴到QT安装路径designer目录下,例如我的安装路径D:\Qt\Qt5.9.2\5.9.2\msvc2015\plugins\designer。粘贴完后可以在D:\Qt\Qt5.9.2\5.9.2\msvc2015\bin目录下打开designer.exe,可以看到左边工具栏中的自定义部件一栏中有

可以看到已经导入了。

复制粘贴到qtcreator的路径下,如我的creator路径下D:\Qt\Qt5.9.2\Tools\QtCreator\bin\plugins\designer

则,可以用Qtcreator中的designed创建自定义部件。

 

以上,自定义部件就生成完毕了。下面我们来使用这个自定义部件

 

二、使用自定义部件

1、任意创建一个工程,我这里以untitled2为例

在工程文件中添加文件夹lib和include

往lib中放入第一步中生成的view_labelplugin.lib

往include中放入view_labelplugin.h文件

往.pro文件中加入

LIBS += $$PWD/lib/view_labelplugin.lib
INCLUDEPATH += $$PWD/include

2、进入include中,把view_labelplugin.h中class 旁的宏QDESIGNER_WIDGET_EXPORT删除

修改如下

#ifndef VIEW_LABEL_H
#define VIEW_LABEL_H

#include <QWidget>
#include <QPushButton>
class  View_label : public QWidget
{
    Q_OBJECT

public:
    View_label(QWidget *parent = 0);

    QPushButton     *m_button;
};

#endif

3、进入ui文件中,把自定义部件view_label拉到窗口里

4、编译

报错是因为dll没有检测到,那我们把view_label.dll复制到工程执行文件exe同级目录下。

问题解决啦,成功调用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值