Qt添加自定义控件

前言

本文详细介绍在Windows 10和Ubuntu 14.04系统下,使用Qt Creator 4.9.0创建自定义控件的过程,并在项目中使用

1 Windows

1.1 说明

Qt Creator中编译项目使用的是MinGW/g++编译器,而Qt提供的Qt Creator本身是由MSVC2017编译的,所以Qt Creator中编译的插件无法在Qt Creator中使用,下面是我安装的Qt Creator
MinGW 64-bit
MSVC 2017, 32 bit
为了在Qt Creator中使用自定义插件,有两种方法,一种是也使用和Qt Creator版本相同的MSVC编译器编译插件,另一种就是使用MinGW重新编译Qt Creator

我选择安装MSVC编译器,需要下载安装Visual Studio 2017

1.2 安装MSVC

首先下载Visual Studio 2017,我下载的是社区版
Visual Studio 2017
下载好之后,按照提示安装即可
MSVC安装

1.3 安装Qt Creator

把原来的Qt Creator卸载掉,重新下载安装Qt Creator

安装的时候,勾选红框中的两项,然后等待安装完成
Qt Creator安装

1.4 创建自定义控件

在Qt Creator点击新建文件或项目,选择Qt4 设计师自定义控件
Qt4 设计师自定义控件
之后输入项目名称,再点下一步,下一步
项目名称
这里需要选择和Qt Creator编译一致的编译工具链,也就是前面安装MSVC的原因
选择编译工具链
然后在控件类框里输入名字,并把所有首字母都换成大写,注意首字母大写,按照编码规范命名,如果小写后面会与实例对象的默认名称出现冲突,会出现编译错误
自定义控件列表
再下一步,下一步,直到完成
插件集合类的信息
最后创建项目目录如下
项目目录
把编译版本改为Release
编译版本
然后右键项目,点击清除,执行qmake,重新构建
重新构建
最后在你的编译目录下,会有dll文件和lib(MinGW编译的是.a文件)
dll和lib
把dll和lib文件复制到Qt安装目录下的plugin/designer路径下,比如我Qt Creator安装是下面的路径

F:\Qt5.12.3\Tools\QtCreator\bin\plugins\designer

文件复制
到这里自定义控件创建完成

1.5 自定义控件使用

重新打开Qt Creator软件,新建一个Qt Widgets Application项目,就能在设计UI界面看到新添加的自定义控件
自定义窗口部件
但是编译的时候会报错

Error: dependent 'SonicWidget.h' does not exist.

这个时候需要把下面这三个文件复制到你新建的项目目录下

SonicWidget.cpp
SonicWidget.h
SonicWidget.pri

在新建的项目的.pro文件中添加下面代码

include(SonicWidget.pri)

再编译就没有问题了

2 Ubuntu

在Qt Creator点击新建文件或项目,选择Qt4 设计师自定义控件
Qt4 设计师自定义控件
之后输入项目名称,再点下一步,下一步
项目名称
然后在控件类框里输入名字,并把所有首字母都换成大写
自定义控件列表
再下一步,下一步,直到完成
插件集合类的信息
最后创建的项目目录如下
项目目录
把编译版本改为Release
编译版本
然后右键项目,点击清除,执行qmake,重新构建
重新构建
最后在你的编译目录下,会找到一个so

/build-SonicWidget-Desktop_Qt_5_12_3_GCC_64bit-Release/libsonicwidgetplugin.so

把生成的so拷贝你的Qt Creator的这个目录下,注意不同的Qt Creator版本,这个目录可能不一样,可以搜索designer文件夹

/opt/Qt5.12.3/Tools/QtCreator/lib/Qt/plugins/designer

重新打开Qt Creator软件,新建一个Qt Widgets Application项目,就能在设计UI界面看到新添加的自定义控件
自定义窗口部件
但是编译的时候会报错

make: *** No rule to make target `SonicWidget.h', needed by `ui_mainwindow.h'.  Stop.

这个时候需要把下面这三个文件复制到你新建的项目目录下

SonicWidget.cpp
SonicWidget.h
SonicWidget.pri

在新建的项目的.pro文件中添加下面代码

include(SonicWidget.pri)

再编译就没有问题了

  • 26
    点赞
  • 165
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值