Qt如何实现高亮按钮控件
发表于:2024-10-03 作者:千家信息网编辑
千家信息网最后更新 2024年10月03日,这篇文章主要介绍Qt如何实现高亮按钮控件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、前言这个高亮按钮控件并非本人原创作品,是参考的Qt界的一个大师级人物公孙二狗的作品,各
千家信息网最后更新 2024年10月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安全错误
数据库的锁怎样保障安全
北京世科昌达网络技术
上海新型网络技术设计
网易帐号删除数据库
闲置服务器挂什么赚钱
事业单位软件开发员
万方数据库是否有word
软件开发上机面试
网络安全未来发展的趋势会是什么
怀旧服服务器对战时间
如何在网上做软件开发兼职
手机使用移动网络无法连接服务器
小楼听雨服务器
株洲net软件开发培训课
sql 如何循环表格数据库
惠州电商软件开发外包
倍福plc做客户端访问服务器
吐鲁番存储服务器
网络安全日志审计服务
网络技术管理接口编址
湖南曙光服务器虚拟化定做
网络安全的岗位与能力要求
上海网络技术推广
华三smtp服务器设置
铜陵求职招聘软件开发定制
网络安全主体责任分级
黄浦区正规软件开发项目信息
网络安全的宣传片的形象
数据库2005怎么打开
郭晶网络安全
ip网络技术及应用