Qt如何实现高亮按钮控件
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍Qt如何实现高亮按钮控件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、前言这个高亮按钮控件并非本人原创作品,是参考的Qt界的一个大师级人物公孙二狗的作品,各
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
广州万易互联网科技有限公司
云之行互联网科技
互联网科技工作委员会主任
互联网电商科技
远拓互联网科技
百单互联网科技有限公司
上海万想互联网科技
互联网科技大会
互联网科技中介
成都互联网科技公司100强
成都铂石互联网科技做什么的
恒生互联网科技指数跳水
中国互联网公司排名锤子科技
企晟互联网信息科技有限公司
互联网企业科技类企业如何做账
萌小萌互联网科技河南有限公司
互联网科技机房
唯美互联网科技
上海互联网科技园景观
重庆科技产业互联网有哪些
互联网科技公司简介
润盈互联网科技
互联网 新科技
湖南洣水互联网科技有限公司扣款
互联网实体化科技化
互联网时代科技改变生活
中国互联网十大科技股排名
江苏互联网科技小贷
西安有哪些互联网高科技企业
互联网金融运营模式中的金融科技