QT 模拟任务管理器 - 云淡风清 - ITeye技术网站
博客分类:
本文实现任务管理器的效果:
实现思路: 1. 不断减小x坐标值,使得网格线平移
2. 将cpu使用率放入一固定数组中, 遍历数组选取相邻两点画直线.
#ifndef DIALOG_H
#define DIALOG_H
#include &QDialog&
class Dialog:public QDialog
Dialog(QWidget *parent=0);
~Dialog();
protected:
void paintEvent(QPaintEvent *);
void timerEvent(QTimerEvent *);
float usage()
int columnI // 动态列偏移值
int * // 随机数据数组
int mL // 记录数组长度
int ptN // 点数目
dialog.cpp
#include "dialog.h"
#include &QtGui&
Dialog::Dialog(QWidget *parent):QDialog(parent)
this-&setWindowTitle(tr("内存监控"));
this-&resize(480,450);
base=10; // 边界基数为10
columnInc=0;
// 黑色背景图
pixmap=QPixmap(width()-base*2,height()-base*2);
pixmap.fill(Qt::black);
// 定时器刷新线条
startTimer(1000);
Dialog::~Dialog()
void Dialog::paintEvent(QPaintEvent *e)
QPainter painter(this);
QPen pen(QColor(46, 139, 87),1.0);
painter.setPen(pen);
// 在图像上作画
painter.drawPixmap(10,10,pixmap);
int graphW=pixmap.width();
int graphH=pixmap.height();
// 画15行直线
int graphRow=graphH/15;
for(int i=i&=graphH+i+=graphRow)
painter.drawLine(base,i,base+graphW,i);
// 动态列指示参数
int graphColumn=graphW/15;
if(columnInc==0)
columnInc=graphC
// 画15列直线
for(int j=base+columnIj&graphW+j+=graphColumn)
painter.drawLine(j,base,j,base+graphH);
--columnI // 改变x坐标值,使曲线产生运动效果
if(pts==NULL)
pts=new int[graphW];
mLen=graphW;
painter.setPen(QPen(Qt::yellow,1.0));
// 产生随机数模拟CPU使用情况
pts[ptNum]=base+graphH*usage();
// 遍历数组,从后面开始画曲线
for(int j=base+graphW-ptNum,k=0;k&ptNk++,j++)
if(pts[k]!=pts[k-1])
painter.drawLine(j-1,pts[k-1],j,pts[k]); // 画直线
painter.fillRect(j,pts[k],1,1,Qt::SolidPattern); // 相等则画矩形
if(ptNum+2==mLen) // 曲线到达最左端
for(int i=1;i&ptNi++)
pts[i-1]=pts[i];
// 舍弃最前面2点,从后向前赋值
}else // 曲线在中间
void Dialog::timerEvent(QTimerEvent *e)
// 定时刷新界面
float Dialog::usage() const
// 用当前时间设置种子
QTime time=QTime::currentTime();
qint64 msecs=time.second()*1000+time.msec();
qsrand(msecs);
// 取(0-1)间小数值
float usage=0.0;
while(true)
usage=(qrand()%100)/100.0;
if(usage&0.1&&usage&0.9)
下载次数: 16
浏览: 239750 次
来自: 深圳
陈宇飞 写道reset()为什么不可以用了,版本低了,还是头文 ...
reset()为什么不可以用了,版本低了,还是头文件呢
环形缓冲区类(C++源码)绝对可用.....转到你网易的微博上 ...
tadpole_java 写道经常看看您的帖子,把它当成教科书 ...匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。