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

  最近比较忙,几乎没什么时间来整理所做所学的东西。本来早该写的,拖了好几天了。

  前一篇随笔里计划要将系统监控工具做成实时的,那么如何做呢?关键就在于定时器的运用。利用定时器,每隔一定的时间间隔去读取相应文件里的信息,然后刷新显示,就能够实现这一功能。很幸运的是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 

原文地址:https://www.cnblogs.com/XiaoHDeBlog/p/3023308.html