我是靠谱客的博主 热情哈密瓜,最近开发中收集的这篇文章主要介绍绘制自定义QSlider,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

通过自定义style,可以实现自定义滑动条、滑块、刻度(节点)的显示效果,可以使滑块移动至鼠标左键点击处。效果图如下:

如果只是想让滑块跟随鼠标左键点击移动,还可以通过事件进行处理。qt的基础控件支持的是鼠标中键移动滑块,我们只需要转换一下事件类型即可:

如果我们还想要在刻度下面显示文字,应该如何处理?

代码如下:

效果如下:

再进一步,如果我们想要在滑动条上方显示tooltip悬浮显示效果,显示当前刻度的值,应该怎么做呢,因为在实际运用当中,可能无法给每个刻度都绘制文字效果,比如在以上的例子中,如果文字内容不是000,111....而是000000,1111111.....这时由于刻度内容较长,如果每个刻度都绘制文字,会导致文字内容叫错在一起,这时一般只在第一个刻度和最后一个刻度下绘制文字,其余地方通过tooltip显示文字内容。

这里展示tooltip的实现:

实际效果如下:

这里只是介绍实现的原理,如果要用到实际的工程项目中,颜色、刻度样式,代码封装、坐标计算等都需要根据实际场景进行优化调整。如果觉得tooltip样式不够好看,也可以自定义或者使用QLabel进行文字提示显示,显示的方案是一样的。

好了,以上的自定义qslider基本包括了所有日常项目中有可能遇到的需求:滑块跟随鼠标点击、自定义滑块、刻度、滑动条样式、文字绘制、tooltip显示等。

后面又想到一个可能的需求,如果要使鼠标移动到滑块上时,使滑块颜色加深,类似与点击效果,应该怎么做呢?

首先安装事件过滤器:

安装事件过滤器的目的是使鼠标进入时触发update进一步触发drawComplexControl。

(不应该自动触发 吗?也许要设置某些参数,暂时使用该方案。)

然后修改drawHandle函数,增加一个判断是否为hover的参数:

实现hover叠加:

常态:

hover态:

选中态:

最后

以上就是热情哈密瓜为你收集整理的绘制自定义QSlider的全部内容,希望文章能够帮你解决绘制自定义QSlider所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部