您的位置:首页 > 编程语言 > Qt开发

QT实现Linux下系统监控小工具之二

2013-04-16 00:59 357 查看
  最近比较忙,几乎没什么时间来整理所做所学的东西。本来早该写的,拖了好几天了。

  前一篇随笔里计划要将系统监控工具做成实时的,那么如何做呢?关键就在于定时器的运用。利用定时器,每隔一定的时间间隔去读取相应文件里的信息,然后刷新显示,就能够实现这一功能。很幸运的是Qt自身提供了两种定时器类:一类是Qtimer类;另一类是QObject类的定时器。这里我是用的是QTimer,觉得比较方便简单。

  使用示例:

QTimer *testtimer = new QTimer(this);
connect(testtimer,SIGNAL(timeout()),this,SLOT(Displayfunction()));
testtimer->start(1000);    //ms


在本示例程序中,我用定时器来动态更新内存信息和负载信息,如下图所示。上一篇随笔中,以MB为单位的显示信息没有包含小数点以后的值,太不精确了,所以得先将得到的字符串类型的结果转换为浮点数类型,然后除以1024,再转换为字符串类型显示出来:

  


  


  关键代码如下:

   QTimer *testtimer = new QTimer(this);
connect(testtimer,SIGNAL(timeout()),this,SLOT(DisplayLoadInfo()));
connect(testtimer,SIGNAL(timeout()),this,SLOT(DisplayMemInfo()));

   testtimer->start(1000);  //start timer of loadinfo every 1 second


  首先定义一个定时器testtimer,然后将超时信号和更新信息函数关联起来,最后设置超时时间为1秒,即每一秒钟刷新一次,使用LCD number控件将得到的负载信息显示出来即可,而前一篇中多余的push_button已经没有用了,果断删掉,显示函数如下(定义LoadInfo load_info):

void MainWindow::DisplayLoadInfo()
{
TestLoadInfo();
ui->lcdNumber_2->display(load_info.m_OneMin);
ui->lcdNumber_3->display(load_info.m_FivMin);
ui->lcdNumber_1->display(load_info.m_FiftMin);
}


  负载信息类定义如下:

class LoadInfo{
public:
double m_OneMin;
double m_FivMin;
double m_FiftMin;
};


  project下载地址:https://code.google.com/p/system-in-view/downloads/list
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: