zoukankan      html  css  js  c++  java
  • 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 

  • 相关阅读:
    网络技术
    AWS责任共担模型
    AWS 创建新用户(IAM用户)
    AWS系列-申请Redis
    AWS系列-申请MySQL
    MDX之Case When用法
    SSAS中雪花模型
    SSAS中处理时经常出现的几种错误
    C#连接Oracle中文乱码问题解决方法
    BI中PowerDesigner建模
  • 原文地址:https://www.cnblogs.com/XiaoHDeBlog/p/3023308.html
Copyright © 2011-2022 走看看