Qt如何实现高亮按钮控件
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍Qt如何实现高亮按钮控件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、前言这个高亮按钮控件并非本人原创作品,是参考的Qt界的一个大师级人物公孙二狗的作品,各
千家信息网最后更新 2025年12月03日Qt如何实现高亮按钮控件
这篇文章主要介绍Qt如何实现高亮按钮控件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、前言
这个高亮按钮控件并非本人原创作品,是参考的Qt界的一个大师级人物公孙二狗的作品,各位有兴趣可以去搜索查看,在原作者的代码上,我只是改成了自己的控件的框架结构,然后完善了一些细节,比如增加了各种颜色设置,提供直接切换颜色模拟交通灯等。
其实整个编程学习过程都是一个不断学习借鉴的过程,不断参考别人的代码,参考自带demo的代码,参考帮助文档,面向搜索编程等,遇到问题不断的先自己努力解决,并思考如何更好的办法,建议学习编程的过程中,多看帮助文档很重要,基本上涵盖了所有函数的说明,起码基本说明是有的,然后参考自带的demo,这样几年搞下来,保准水平蹭蹭蹭的上涨。
高亮按钮控件功能:
可设置文本,居中显示
可设置文本颜色
可设置外边框渐变颜色
可设置里边框渐变颜色
可设置背景色
可直接调用内置的设置 绿色/红色/黄色/黑色/蓝色 等公有槽函数
可设置是否在容器中可移动,当成一个对象使用
可设置是否显示矩形
可设置报警颜色+非报警颜色
可控制启动报警和停止报警,报警时闪烁
二、代码思路
//绘制外边框void LightButton::drawBorderOut(QPainter *painter){ int radius = 99; painter->save(); painter->setPen(Qt::NoPen); QLinearGradient borderGradient(0, -radius, 0, radius); borderGradient.setColorAt(0, borderOutColorStart); borderGradient.setColorAt(1, borderOutColorEnd); painter->setBrush(borderGradient); painter->drawEllipse(-radius, -radius, radius * 2, radius * 2); painter->restore();}//绘制内边框void LightButton::drawBorderIn(QPainter *painter){ int radius = 90; painter->save(); painter->setPen(Qt::NoPen); QLinearGradient borderGradient(0, -radius, 0, radius); borderGradient.setColorAt(0, borderInColorStart); borderGradient.setColorAt(1, borderInColorEnd); painter->setBrush(borderGradient); painter->drawEllipse(-radius, -radius, radius * 2, radius * 2); painter->restore();}//绘制主背景void LightButton::drawBg(QPainter *painter){ int radius = 80; painter->save(); painter->setPen(Qt::NoPen); painter->setBrush(bgColor); painter->drawEllipse(-radius, -radius, radius * 2, radius * 2); painter->restore();}//绘制文字void LightButton::drawText(QPainter *painter){ if (text.isEmpty()) { return; } int radius = 100; painter->save(); QFont font; font.setPixelSize(85); painter->setFont(font); painter->setPen(textColor); QRect rect(-radius, -radius, radius * 2, radius * 2); painter->drawText(rect, Qt::AlignCenter, text); painter->restore();}//绘制遮罩层void LightButton::drawOverlay(QPainter *painter){ if (!showOverlay) { return; } int radius = 80; painter->save(); painter->setPen(Qt::NoPen); QPainterPath smallCircle; QPainterPath bigCircle; radius -= 1; smallCircle.addEllipse(-radius, -radius, radius * 2, radius * 2); radius *= 2; bigCircle.addEllipse(-radius, -radius + 140, radius * 2, radius * 2); //高光的形状为小圆扣掉大圆的部分 QPainterPath highlight = smallCircle - bigCircle; QLinearGradient linearGradient(0, -radius / 2, 0, 0); overlayColor.setAlpha(100); linearGradient.setColorAt(0.0, overlayColor); overlayColor.setAlpha(30); linearGradient.setColorAt(1.0, overlayColor); painter->setBrush(linearGradient); painter->rotate(-20); painter->drawPath(highlight); painter->restore();}三、效果图
以上是"Qt如何实现高亮按钮控件"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
可设
颜色
参考
控件
报警
按钮
高亮
代码
边框
不断
过程
学习
帮助
编程
作品
兴趣
内容
函数
文本
文档
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
pyside2和数据库联动
大学生想学一些网络技术
三级网络技术历年真题下载
四川警察网络安全与执法
云南省网络安全管理局
内网可以架设代理服务器吗
智慧家庭网络安全有限公司
国统股份网络技术有限公司
sap ase开源数据库
上海来玺互联网科技合伙
我的世界服务器在哪招人
医务人员面临网络安全问题
mac搭建ftp服务器
诊疗技术数据库
安全的加密传输数据库
为数据库建立一个完全备份
芜湖飞慧网络技术有限公司
网络安全知识答题大赛
16盘位存储服务器存盘硬盘数量
青浦区技术网络技术服务常见问题
inspec是什么数据库
尚硅谷基于数据库表的权限设计
厦门第二届网络安全周
hp服务器保修政策
辽宁软件开发系统生产商
数据库与程序设计原理
科技互联网有哪些学校
软件开发不需要垫资
cpu和高速缓存数据库
广州瀚银网络技术有效公司