在以前的文章中,我们介绍了如何在QTabWidget中画网络拓扑图。今天,我们介绍一下,如何使得所画的图呈现出动态的变化,比如在网络拓扑中,随着时间的变化,一些节点显示红色,一些节点显示绿色。
准备过程:红色和绿色的图片
思路:依旧使用重写paintevent函数来实现画图功能,要使图片随着时间的变化更新,就需要使用计时器来触发页面更新,页面更新可以使用update函数。
代码:
#include "showtopology.h"
#include "mainwindow.h"
#include <QPainter>
#include <QWidget>
#include <QTime>
#include <QTimer>
showtopology::showtopology(QWidget *parent) : QWidget(parent)
{
QTimer *timer3= new QTimer();//声明计时器
connect(timer3,SIGNAL(timeout()),this,SLOT(update()));//计时器用来触发更新
timer3->start(1000);//更新间隔为1秒
}
void showtopology::paintEvent(QPaintEvent *event)
{
QPainter paint(this);
paint.setPen(Qt::DashLine);
paint.setRenderHint(QPainter::Antialiasing, true);
QPixmap ap1("ap1.png");//AP和两种STA的图片的声明;
QPixmap img1("STA2.png");
QPixmap img2("STA1.png");
paint.drawPixmap(350,150,ap1);
qsrand(time(NULL));
int n1;
double n[50];//一共有50个节点
for (int i =0; i<50; i++)
{
n1= qrand();
n[i] = n1/10000000.0;
}
for(int i =