01 Qt自定义风格控件的基本原则

本文介绍了如何在Qt开发中通过继承原生控件、组合控件和仿写原生控件来创建自定义控件,重点讲解了继承原生控件以保持功能接口复用和通过paintEvent进行定制,以及组合原生控件以实现新风格的实例应用。
摘要由CSDN通过智能技术生成

              目录

1.继承原生控件

2.组合原生控件

3.仿写原生控件

PS:后续将继续分享开发实践中各类自定义控件的方法、思路以及组件库


1.继承原生控件

关键字:继承、paintEvent

    这里想说的是,Qt的Gui框架在封装原生控件的同时, 也为开发者提供了各种虚接口函数。如果Qt原生控件+QSS样式表的组合满足不了业务开发的风格需要时, 那么继承Qt原生控件、重写绘制关联虚接口函数一定是我封装控件的第一选择。

比如:下面虚线风格的滑动条

图1-1

Qt原生风格的QSlider显然不可能达到该效果,那么继承QSlider类,然后重写虚函数QSlider::paintEvent,分别绘制groove、刻度线、进度以及滑块,就可以实现目标效果!

    这里为什么要刻意强调继承原生控件呢?因为,继承了原生控件,你才能保持控件的基本功能接口的有效复用,而在paintEvent中,无论做什么绘制,都依赖于各个接口的返回结果(比如:滑动条的进度值)。当然,并不是所有的绘制都是简单的一个虚函数paintEvent可以搞定的,这个要具体问题具体分析!

2.组合原生控件

关键字:组合、布局

    这里所说的组合原生控件是指:在原生控件的基础上布局新的子控件,以满足业务需求、实现新的自定义风格的控件。

举个例子:下图所示的带按钮的编辑框非常常见

2-1
图2-1

而QLineEdit类显然不具备上述按钮功能,那么遵循该原则的实现思路就是:能否把一个按钮QPushButton布局在QLineEdit的右边,两个父子控件组合在一起的话是不是就达到了预期的效果了呢? 显然是可以的!

当然,上述控件的实现思路很多,每个开发者都会有自己的独特视角!

3.仿写原生控件

仿写原生控件当然是代价最高的一种自定义风格控件的实现方式!

这意味着,开发者要重新造轮子,根据目标效果另起炉灶、完全重写一个新的控件类。

比如,下图展示的时间选择控件:

图3-1

 显然,这个时间选择组件,由两部分组成,首先是一个可编辑时间的编辑框,其次,当点击时间值后,会在下面显示时间选择Popup弹窗。而且每一个子控件都是需要重新实现的新风格组件。

所以第三种情形下,就要开发者无所不用其极的实现渲染效果以及预期业务功能接口了。

PS:后续将继续分享开发实践中各类自定义控件的方法、思路以及组件库

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峭桑岱司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值