Qt自定义控件之提升法

1、参考:Qt之实现自定义控件的两种方式——提升法
2、概述:自定义控件是常需要使用到的技能,在既有的Qt控件不能满足开发的前提下,自定义控件给了程序员很多的发挥空间和便利。自定义控件有两种方式,一种是通过提升法来实现,另一种是通过插件形式来实现。结合上述的参考网址和我自己的测试情况,自定义控件的提升法主要步骤是:
a.创建及绘制:创建一个带ui的自定义Qt类,继承自QWidget,在Ui上绘制或者通过重载void paintEvent(QPaintEvent *event)绘制需要的图形;
b. 提升:绘制完毕后,通过QtCreator的设计界面找到控件并进行提升为自定义的控件类;
c. 使用:创建一个新的ui类,在QtCreator的设计界面新建一个QWidget控件,将其提升为自定义控件类。

2.1、创建及绘制
新建一个Qt的界面项目,使用QWidget类作为主界面,再增加一个MyBattery的UI类,继承自QWidget类,然后重载void paintEvent(QPaintEvent *event)函数,在里面进行绘制的操作。
新增加的自定义控件类
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.2 、提升
在设计师中打开mybattery.ui,找到控件QWidget-电池的绘制对象,右键->提升,在提升的界面中,增加MyBattery提升上,注意继承自QWidget,与之前的保持一致。添加后,再点击提升。
在这里插入图片描述

2.3 、在创建该工程时,我们已经有一个QWidget类了,在设计师中打开widget.ui,拖一个QWidget控件对象,右键->提升为MyBattery,即可。
在这里插入图片描述2.4 运行结果
在这里插入图片描述

3、github代码地址

4、可能出现的问题:
E:\QtTest\build-untitled7-MyBattery-Desktop_Qt_5_15_2_MinGW_64_bit-Debug\ui_mybattery.h:31: error: expected type-specifier before ‘MyBattery’
In file included from …\untitled7-MyBattery\mybattery.cpp:2:
./ui_mybattery.h: In member function ‘void Ui_MyBattery::setupUi(QWidget*)’:
./ui_mybattery.h:31:22: error: expected type-specifier before ‘MyBattery’
widget = new MyBattery(MyBattery);
这个问题的可能原因是:自定义控件被反复取消或者删除再重新添加,导致另一个界面中已经提升的QWidget类对象没有被同步,需要取消提升再添加提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值