Qt如何实现高亮按钮控件
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍Qt如何实现高亮按钮控件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、前言这个高亮按钮控件并非本人原创作品,是参考的Qt界的一个大师级人物公孙二狗的作品,各
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
信息与网络安全实验报告
淮安通用软件开发特点
顶级技术软件开发
阿里云服务器安装qq
长理网络安全知识竞赛答案
属于3G网络技术标准的是
网络安全业务有哪几个方面
中国量子神经网络技术
ebml数据库
要更改数据库管理器配置文件
云服务器怎么增加c盘容量
服务器托管税率
深圳比亚迪服务器
酒店数据库表
手机软件开发需要多久
成都嵌入式软件开发工程师面试
软件开发一定要付全款吗
计算机网络技术pan
加强全市网络安全管理的通知
轰炸数据库
肿瘤登记注册数据库
温州网络技术学院
java构建服务器
土豆服务器网速多少
衡水科技产业互联网有哪些
内蒙古推广软件开发商家
腾讯云服务器的防护阀值
360网络安全平台
肥东网络技术服务收费
南谯区常见软件开发技术销售厂