Qt重绘控件之移动信号

背景

     这两天新买了无线路由器,说明书介绍说该设备信号相当不错,各种参数眼花缭乱。于是设置好wifi,并用手机连接上,先是尝试了下网速 然后干拿着跑了很远尝试信号情况。那么手机顶部wifi的图标指示了当前信号的强度,wifi强度变化让我来了兴趣 于是给邻居小胖的苹果手机连接上了俺的wifi。看着小胖苹果手机顶部的移动信号于是有了这篇Qt重绘控件的想法。哈哈,挺好玩的。

     本控件已经制作完成,使用的时候可直接使用。额。。还是先看看成品图再说,
Qt重绘控件之移动信号_第1张图片
     效果如上,貌似还不错。是的,那么接着说一下绘图步骤及用法,最后贴上源码供有兴趣的朋友了解一哈。(顺便一提,有好的作品请需要发布,后台请联系微信公众号)

步骤
  • 创建一个类对象继承QWidget
const unsigned short sigInterval = 40;
class SigDisplay : public QWidget
{
	Q_OBJECT

public:
	SigDisplay(QWidget *parent = nullptr);
	~SigDisplay();
};
  • 重写虚函数 paintEvent
protected:
	virtual void paintEvent(QPointEvent *);
  • 设置反锯齿
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
  • 获取绘图起点
QPoint SigDisplay::getStartPoint()
{
	unsigned short centerX = width() / 6;
	unsigned short centerY = height() - height() / 8;
	return QPoint(centerX,centerY);
}
----------------
painter.translate(getStartPoint());
  • 绘制信号线
painter.drawLine(sigInterval * 2,0,sigInterval * 2,-sigInterval *3);
  • 绘制文字
painter.drawText(sigInterval * 4,0,level==4?"4G":level==3?"3G":level==2?" E":level==1?" G":" ...");

至此,大部分核心已经抛出去了。哈哈

另外可以了解一下wifi部分知识:

手机信号的一些科普

     大多数同学都应该听说过基站或者信号站(塔)这两个名词,其实呢是一种东西。而手机信号就是经由这个我们称之为基站的东西发射出来的。基站是一个总称它包括机房和天线两部分,机房里装有主设备(2G、3G、4G、Wlan)、传输柜、电源柜、动环监控设备、避雷设备、烟&温感灭火器(一人高)、蓄电池组(用来断电后应急自动启用)、空调(对没看错是空调,用来给机房降温用),天线部分包括馈线(链接主设备和天线,材质为纯铜且损耗大故现在一般在使用光纤)和天线。那么信号的产生在简化工作流程后,就是经由主设备天线将信号产生并发射出去。手机信号是电磁波,在基站与手机之间传输。专业上叫载波,将语音信号,转变成有利于在空气中传播的电磁波信号,达到通信传输的目的。
     2G-3G-4G信号的频率是呈递增,所以他们的波长是呈递减。如果没有遮挡物(例如金属、墙壁等)那么毫无疑问单位时间内的数据吞吐也就是网速呈递增状态。电磁波具有波粒二象性,即具有波特性的绕射力和具有粒子特性的穿透力。理论情况下电磁波的穿透力是根据频率呈递增,但是考虑到钢筋混凝土结构的墙壁,从远处基站发出的高频电磁波会受到更大程度上的衰减,所以当我们处于建筑物遮挡时主要考虑的是电磁波的波特性即绕射力,波长越长它的衍射能力就越强也就是绕过阻挡物的能力越来越强。2G-3G-4G频率呈递增,所以波长呈递减状态,所以在面对一个建筑物时2G信号比3G和4G的绕射能力都要强。这也就是为什么我们在一些建筑物内没有4G或4G很差,但是2G通话质量却不受影响的原因。
     基站与手机之间的通信关系,简单理解,我们的手机会向周围所有工作范围内的基站发送请求指令,而只有信号最强的那个基站会与手机建立连接,其他基站接收请求指令却不予理睬。根据这个理论,如果我们处于高层建筑时,由于缺少其他建筑物的阻挡,那么周围所有的基站的信号强度都是近乎一致的,都可能参与建立连接,那么我们手机在通信过程中就会由于来回切换基站导致出现不稳定的情况。同理空旷的地区也是如此,但不一样的是空旷地区人口稀疏考虑到资源浪费,运营商会在该地区做必要覆盖而非过量覆盖(基站数量较建筑群会减少很多)。人多人少并不会影响信号的好坏,只是会通话不宜接通,通话质量变得不好,这是因为使用手机的人多,占用的信道也就相对较多,甚至造成信道拥塞最终导致感知不好。

源码

源码下载

关注

微信公众号搜索"Qt_io_"或"Qt开发者中心"了解更多关于Qt、C++开发知识.。

笔者 - jxd

你可能感兴趣的:(Qt,Qt重绘控件)