#include "signalwidget.h"
#include <QPainter>
SignalWidget::SignalWidget(QWidget *parent) : QWidget(parent)
{
m_signalStrength = SignalStrength::Zero;
}
SignalWidget::~SignalWidget()
{
}
void SignalWidget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter p(this);
p.setRenderHint(QPainter::Antialiasing);
float hUnit = this->height() / 5.0;
int h1 = hUnit * 1;
int h2 = hUnit * 2;
int h3 = hUnit * 3;
int h4 = hUnit * 4;
//widget 宽度分为七份,四个信号柱及三个空白区域各占一份
float wUnit = this->width() / 7.0;
int x1 = 1;
int x2 = wUnit * 2+1;
int x3 = wUnit * 4;
int x4 = wUnit * 6 - 1;
QColor havaSignal = QColor(20, 18, 19);
QColor noSignal = Qt::lightGray;
QColor colorOne, colorTwo, colorThree, colorFour;
colorOne = noSignal;
colorTwo = noSignal;
colorThree = noSignal;
colorFour = noSignal;
switch(m_signalStrength)
{
case SignalStrength::Four:
colorFour = havaSignal;
case SignalStrength::Three:
colorThree = havaSignal;
case SignalStrength::Two:
colorTwo = havaSignal;
case SignalStrength::One:
colorOne = havaSignal;
default: break;
};
p.setPen(colorFour);
p.setBrush(colorFour);
p.drawRect(x4, this->height() - h4, wUnit, h4);
p.setPen(colorThree);
p.setBrush(colorThree);
p.drawRect(x3, this->height() - h3, wUnit, h3);
p.setPen(colorTwo);
p.setBrush(colorTwo);
p.drawRect(x2, this->height() - h2, wUnit, h2);
p.setPen(colorOne);
p.setBrush(colorOne);
p.drawRect(x1, this->height() - h1, wUnit, h1);
QFont font;
font.setPixelSize(this->height() / 2.0);
font.setBold(true);
p.setFont(font);
QString text = "4G";
p.drawText(0, this->height() - h2-5,text);
if(m_signalStrength == SignalStrength::Zero)
{
QFontMetrics metrics(font);
int w = metrics.width(text);
int h = metrics.height();
p.drawLine(x1, this->height() - h,w,1);
p.drawLine(x1, 1,w,this->height() - h);
}
}
void SignalWidget::setSignalStrength(SignalStrength newSignalStrength)
{
m_signalStrength = newSignalStrength;
this->update();
}
秀木易风
- 粉丝: 1861
- 资源: 34
最新资源
- 硕飞烧录器上位机软件及nand flash制作烧录文件及烧录方法
- genad-hGridSample-test.hbm
- 通信原理(第七版 樊昌信 曹丽娜)思维导图
- 基于python的网络爬虫爬取天气数据及可视化分析python大作业源码
- 老鼠图像目标检测数据【已标注,约1100张数据,YOLO 标注格式】
- 简易制作java1.8环境的docker镜像包arm64
- C#课程的最终大作业,个人Blog带db数据库文件winform
- 技术册投标文件的的查重
- J6上板测试模型,原始版本
- 基于python的网络爬虫爬取天气数据及可视化分析系统源码
- 基于 springboot+vue 的高校宿舍管理系统设计与实现 前端:Vue3 后端Springboot 数据库MySQL 含参考Word 可作为毕设参考,项目完整拿来即用 有数据库文件
- 基于java的商城积分系统(编号:90821116).zip
- 基于Java的电影院售票管理系统(编号:63808153).zip
- 基于java的电缆行业生产管理系统(编号:474342100).zip
- 基于java的网上订餐系统(编号:96717170).zip
- 基于python的网络爬虫爬取天气数据及可视化分析项目源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈