Qt自界说控件之提升法

打印 上一主题 下一主题

主题 964|帖子 964|积分 2892

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类对象没有被同步,需要取消提升再添加提升。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

雁过留声

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表