QT之“飞镖盘”自定义控件
QT之“飞镖盘”自定义控件
- 前言
- 控件预览
- 实现
前言
现在发一个我之前看过有人写了一个抽奖转盘,所以闲来无事写了一个飞镖盘控件,在我看来它其它没有什么实用价值,纯属写来玩玩而已。
控件预览
实现
- 画背景
void QDartboard::drawBkg(QPainter *painter,)
{int radius = 95;painter->save();painter->setBrush(bkgColor);painter->drawEllipse(-radius, -radius, radius << 1, radius << 1);painter->restore();
}
- 画扇形
void QDartboard::drawFans(QPainter *painter)
{float rad = 0;float panAngle = 360 / fanNum;int radius = 80;for(int i = 1; i <= fanNum; i++){if(i % 2 == 0){gradientArc(painter, radius, rad + panAngle * i, panAngle, qRgb(200, 0, 0));gradientArc(painter, radius - ringSize, rad + panAngle * i, panAngle, qRgb(0, 200, 0));gradientArc(painter, radius - 30, rad + panAngle * i, panAngle, qRgb(200, 0, 0));gradientArc(painter, radius - 30 - ringSize, rad + panAngle * i, panAngle, qRgb(0, 200, 0));}else{gradientArc(painter, radius, rad + panAngle * i, panAngle, qRgb(0, 200, 0));gradientArc(painter, radius - ringSize, rad + panAngle * i, panAngle, qRgb(200, 0, 0));gradientArc(painter, radius - 30, rad + panAngle * i, panAngle, qRgb(0, 200, 0));gradientArc(painter, radius - 30 - ringSize, rad + panAngle * i, panAngle, qRgb(200, 0, 0));}}gradientArc(painter, radius - 70, 0, 360, qRgb(0, 200, 0));gradientArc(painter, radius - 75, 0, 360, qRgb(200, 0, 0));
}void QDartboard::gradientArc(QPainter *painter, int radius, int startAngle, int angleLength, QRgb color)
{painter->save();// 渐变色//QRadialGradient gradient(0, 0, radius);//gradient.setColorAt(0, Qt::white);//gradient.setColorAt(1.0, color);//painter->setBrush(QColor(color));//painter->setPen(color);// << 1(左移1位)相当于radius*2 即:150*2=300//QRectF(-150, -150, 300, 300)QRectF rect(-radius, -radius, radius << 1, radius << 1);QPainterPath path;path.arcTo(rect, startAngle, angleLength);painter->setPen(Qt::NoPen);painter->drawPath(path);painter->fillPath(path, QBrush(QColor(color)));painter->restore();
}
- 画刻度值
void QDartboard::drawScaleNum(QPainter *painter)
{int radius = 85;painter->save();painter->setPen(Qt::white);QFont font("Arial", 6, QFont::Bold, false);//设置字体的类型,大小,加粗,斜体painter->setFont(font);painter->rotate(90 + ((360 / fanNum) / 2));for (int i = 1; i <= fanNum; i++){QString strValue = QString("%1").arg(i);double textWidth = fontMetrics().width(strValue);//double textHeight = fontMetrics().height();painter->rotate(-360 / fanNum);painter->drawText(0 - textWidth / 2, -radius, strValue);}painter->restore();
}
QT之“飞镖盘”自定义控件相关推荐
- Qt创建设计师自定义控件(Qt Designer自定义控件)
Qt提供了一个Designer界面,使得我们可以自由拖动控件对ui进行布局,但所有的控件都是固定的,如果我们想要自定义一个自己设计的控件,添加到Designer中,可供设计者自由设计.那么可以进行如下 ...
- Qt/C++编写自定义控件44-天气仪表盘
一.前言 天气仪表盘控件是所有控件中唯一一个使用了svg矢量图的控件,各种天气图标采用的矢量图,颜色变换采用动态载入svg的内容更改生成的,其实也可以采用图形字体来做,本次控件为了熟悉下svg在Qt中 ...
- Qt/C++编写自定义控件10-云台仪表盘
一.前言 做过安防视频监控的同学都清楚,在视频监控系统软件上都可以看到一个云台控制区域,可以对球机进行下下左右等八个方位的运动控制,还可以进行复位,一般都是美工作图好,然后贴图的形式加入到软件中,好处 ...
- Qt/C++编写自定义控件48-面板窗体控件
一.前言 很多时候需要有一个控件,能够替代容器控件,自动容纳多个widget,自适应宽高,然后提供滚动条功能,这就必然需要用到QScrollArea控件,可设置各个子面板的间距等,也在很多系统中用到, ...
- Qt/C++编写自定义控件40-导航进度条
一.前言 导航进度条控件,其实就是支付宝.京东.淘宝订单页面的进度控件,提示当前第几步,总共有几步,然后当前进度特殊颜色显示,每个进度带有时间文字等信息,本控件特意将三种样式风格都集成进去了,京东订单 ...
- 【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.1 效果演示、技术点
本节对应的视频讲解:B_站_视_频 https://www.bilibili.com/video/BV14P4y197pi Qt 中绘图用到的类是 QPainter,可以实现点.线.矩形.圆形.多边形 ...
- Qt编写控件属性设计器4-加载属性
一.前言 控件能加载拖曳拉伸了,这些都是基本的前提工作,接下来的重点就是要动态加载选中控件的属性了,Qt的属性机制那是异常的强大,只能用强大到爆来形容,Qt中编写自定义控件,如果属性都用Q_PROPE ...
- 如何化解总想快速崛起导致的焦虑
最近加入了安晓辉老师的知识星球『 副业赚钱 』,每周都会有一些案例浮现出来,比如Qt侠卖自定义控件和GUI方案月入三万(识别下面二维码可查看). 这些案例,一方面会给我们指引和激励,另一方面,也会带给 ...
- qt获取当前系统音量值_Qt编写自定义控件50-迷你仪表盘
一.前言 这个控件取名叫迷你仪表盘,是以为该控件可以缩小到很小很小的区域显示,非常适合小面积区域展示仪表数据使用,还可以手动触摸调节进度,是我个人觉得最漂亮小巧的一个控件.初次看到类似的控件是在一个音 ...
最新文章
- mongodb 安装启动
- 【矩阵乘法】递推(ssl 1532)
- Linux安装与基本操作命令与JDK的安装,Mysql的安装,Tomcat的安装
- adobe photoshop教程:使用PS创建逼真生动的水下文本效果
- 二级计算机题世界动物日,计算机二级考试真题-PPT-张宇-世界动物日介绍
- Set ip IPv6 env (by quqi99)
- win10永久设置护眼颜色
- 两种曲线下面积AUC(Area Under the ROC Curve):ROC-AUC、PR-AUC(性能度量)
- matlab的persistent,MATLAB局部静态变量类型persistent
- 光学显微镜分辨率极限
- awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
- uva 571 Jugs
- 联想x3650服务器安装硬盘,IBM x3650 M2服务器系统安装攻略(组图)
- 中国计算机学会推荐中文科技期刊目录(2019年)
- vSphere 6.7 U3部署win11
- 如何学习数据分析(总结自网易及B站up主)
- 哪里可以免费下载适合Mac版苹果电脑端解压缩软件
- 转型在即,迭创新高——重新认识BNB
- 计算机控制和dcs控制的区别,从几个方面了解DCS与PLC控制柜到底有什么区别
- 以太网电路中网络变压器集成共模电感,连接方向的选择
热门文章
- ZZULIOJ1033
- mysql unpivot_SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子...
- cocos源码分析--SpriteBatchNode绘图原理(转--侵删)
- HRESULT的使用
- 视频编码会议常用网址
- 【JVM】jvm的体系结构
- 编程精粹 --Microsoft编写优质无错C程序秘诀
- Java Swing+SQL sever学生管理系统代码
- iterator_traits
- fifaol3服务器位置,《FIFA OL3》最热位置观察 传奇球星遍布服务器