由于过段时间得帮师兄做一个linux下的图形化测试程序,所以最近开始学习Qt,感觉Qt用起来挺方便简单的,上手还算比较快吧,近两天就写了一个用来监控系统的小工具,功能尚不完善,还在探索,觉得也有必要记录下工作同时还得弄清楚类似任务管理器的东东是怎么得到系统数据和性能的~~

  闲话少说,Qt的安装过程就十分费劲,前段时间由于官网服务器(http://Qt-project.org/downloads)自己的问题,每次下到一半多就自动断了,都快崩溃了......要使用Qt必须有Qtlibray和QtCreator,最新的版本是5.0,需要有较高版本的GLIBC和GLIBCXX的支持,具体多少版本可以我忘了......反正比较新的就行了,不然安装不能成功。i

  Qt使用的对象与方法通信的机制称为信号和槽机制,这也是Qt特点之一。由于我以前接触过MFC,所以个人感觉和window编程中的消息与消息处理函数很类似,不知到谁前谁后。

  具体讲,Qt的基类QObject中有一个成员函数来完成信号和槽的关联。函数原型如下:

#include <QObject>static bool QObject::connect(const QObject *sender,const char *signal,const Qbject *receiver,const char *member);

  其中sender为发送信号的控件,receiver为接受信号的控件,member为槽函数。

  本着学习的态度,开始做一个系统监控工具,其中使用到了QTableWidget,QTabWidget,Graphics View,Push Button,MenuBar等控件,基本界面如下:

 

   由于不了解任务管理器的原理,我就想linux下一般都能在/proc/目录下查看cpuinfo,meminfo等文件来查看系统信息,是不是可以读取这些文件内容,然后将单击Button与显示内容进行关联,似乎是可行的。以内存子Tab为例,单击Mem-start按钮,得到实时的内存,交换区,缓冲等信息,每次点击Mem-start后信息会刷新,但暂时还不能自动动态刷新,估计得搞个定时器神马的才行,算是下一步计划吧。

  cat  /proc/meminfo,发现文件格式很规整,所以我想每次从文件中读一个字符串,要得到MemTotal信息,就先检测,若读到MemTotal:,则再向后读一个字符串,然后将结果保存给特定的类,之后传递给DisplayMemInfo函数,显示之(读取文件并判断的代码太丑,楼主就不好意思贴出来了~)。

class MemInfo{
public:string MemTotal;string MemFree;string Buffers;string Cached;string SwapTotal;string SwapFree;
};

  上面数据结构用于保存读到的memory相关信息。

void MainWindow::DisplayMemInfo()
{TestMemInfo();ui->tableWidget_2->setItem(0,0,new QTableWidgetItem(mem_infoKB.MemTotal.c_str()));ui->tableWidget_2->setItem(0,1,new QTableWidgetItem(mem_infoKB.MemFree.c_str()));ui->tableWidget_2->setItem(0,2,new QTableWidgetItem(mem_infoKB.Buffers.c_str()));ui->tableWidget_2->setItem(0,3,new QTableWidgetItem(mem_infoKB.Cached.c_str()));ui->tableWidget_2->setItem(0,4,new QTableWidgetItem(mem_infoKB.SwapTotal.c_str()));ui->tableWidget_2->setItem(0,5,new QTableWidgetItem(mem_infoKB.SwapFree.c_str()));ui->tableWidget_2->setItem(1,0,new QTableWidgetItem(mem_infoMB.MemTotal.c_str()));ui->tableWidget_2->setItem(1,1,new QTableWidgetItem(mem_infoMB.MemFree.c_str()));ui->tableWidget_2->setItem(1,2,new QTableWidgetItem(mem_infoMB.Buffers.c_str()));ui->tableWidget_2->setItem(1,3,new QTableWidgetItem(mem_infoMB.Cached.c_str()));ui->tableWidget_2->setItem(1,4,new QTableWidgetItem(mem_infoMB.SwapTotal.c_str()));ui->tableWidget_2->setItem(1,5,new QTableWidgetItem(mem_infoMB.SwapFree.c_str()));
}  

 最后是菜单上的关于信息窗口,相信每个图形化项目都有一个关于信息框用于显示制作公司或人员信息以及版本号,图标之类的信息,看起来还凑合~ ,计划下一步是将得到的数据弄成图形形式的,这样更直观,也符合可视化这种需求:-)

转载于:https://www.cnblogs.com/XiaoHDeBlog/archive/2013/04/10/3013198.html

QT实现Linux下系统监控小工具相关推荐

  1. deepin(深度linux)dde-dock系统监控小插件(网速CPU内存)

    转载自deepin(深度linux)dde-dock系统监控小插件(网速CPU内存),仅用作个人学习备份,Mark一下 花了一周时间,研究了dde-dock官方插件开发文档和sonichy大神的项目, ...

  2. linux下检测硬盘,【转载】linux下硬盘监控诊断工具SmartTools

    对于windwos下raid卡具备告警功能,当硬盘故障.raid卡告警时,可以发邮件给管理员.IBM.HP.Dell都支持.但在linux下,就没有找到相关的好工具了,今天到陈沙克的博客上到一篇关于l ...

  3. 推荐几个Linux命令行下性能监控小工具

    原文链接 在Linux中,CPU,内存等系统状态可以通过top命令查看,或者用图形界面的工具,如gnome-system-monitor.但是,有时候,想知道更详细的信息,比如说进程树之类的,网络具体 ...

  4. Linux下的截图小工具

    Linux下的截图工具scrot 基于命令行 先下载:scrot apt-get install scrot 对该工具的操作: 分为以下几个部分 1.抓取整个桌面 scrot pic.jpg 2.抓取 ...

  5. 计算机桌面复制到画图,Windows10系统下将画图小工具添加到桌面的技巧

    windows10系统下,用户如果想要使用画图工具的话,都得通过右键-打开方式-画图这种方式来打开,这样不免会有些麻烦.其实,我们只要在Win10系统下把画图小工具添加到桌面就可以了.下面,就随小编看 ...

  6. linux系统io查看计算,Linux下查看进程IO工具iopp

    Linux下的IO检测工具最常用的是iostat,不过iostat只能查看到总的IO情况.如果要细看具体那一个程序点用的IO较高,可以使用iotop .不过iotop对内核版本和Python版本有要求 ...

  7. linux系统 插优盘安装xvidcap,Linux下的屏幕录制工具XVidCap

    Jun 05, 2008 XVidCap是Linux下的屏幕录制工具,是讲解软件使用方法.演示电脑操作的必备秘技. XVidCap大概是X windows Video Capture的缩写,未经考证. ...

  8. 查看linux进程的设备io,Linux下查看进程IO工具iopp

    Linux下的IO检测工具最常用的是iostat,不过iostat只能查看到总的IO情况.如果要细看具体那一个程序点用的IO较高,可以使用iotop .不过iotop对内核版本和Python版本有要求 ...

  9. Linux下程序的Profiling工具-性能测试工具GNU gprof

    Linux下程序的Profiling工具 http://blog.chinaunix.net/uid-128922-id-289972.html 我们在写程序,特别是嵌入式程序的时候,通常需要对程序的 ...

  10. 在 Linux 下安装 GNU ARM 工具链

    可以使用多种工具编写不同版本的 ARM 内核,但最流行的一组工具是 GNU ARM 工具链.更多地了解如何使用 ARM 内核进行嵌入式开发,以及如何安装并使用 GNU 工具. 如果您对在最普遍的微处理 ...

最新文章

  1. 腾讯医疗AI实验室:3篇论文被国际顶尖会议收录
  2. linux下硬盘的安装及分区fdisk
  3. [原创]IrrLicht的GUI使用
  4. 理解C#语言中的类型转换----初学者的理解,请大神指教
  5. 自己遇到oracle的错误记录
  6. python 模块路径搜索_Python模块搜索路径问题
  7. smbus使用 树莓派_Linux控制I2C/SMBus设备
  8. 用 toto 快速建轻量级博客
  9. Cadence系列之SIPI仿真笔记:Cadence多种版本的安装、卸载重装(一)
  10. scrollTop、clientHeight、 scrollHeight...学完真的理解了
  11. 微信小程序+.NET(十八) ffmpeg音频转码/拼接/混合
  12. Photoshop插件-删除所有亮度通道蒙板-脚本开发-PS插件
  13. Adobe证书含金量
  14. 夺宝奇兵 (优先队列 + 贪心 + 暴力枚举)
  15. JDBC模拟SQL注入和避免SQL注入
  16. 项目成功和失败的几大因素
  17. 解决no matching host key type found. Their offer: ssh-rsa报错信息具体方法
  18. 去哪儿网抢票成功率怎么样?
  19. 统计学:标准差的运用
  20. 前端开发环境 构建工具

热门文章

  1. python中tolist()功能
  2. [译] A Neural Algorithm of Artistic Style--图片风格化
  3. 2021-08-06聚合函数,分组过滤
  4. 机器学习、⼈⼯智能、深度学习是什么关系?
  5. 将linux系统分区变成逻辑卷,linux运维基础知识-系统分区及LVM逻辑卷的创建
  6. 基于springboot+vue的智慧教室预约系统(前后端分离)
  7. 小米系统wifi服务器,如何将小米8se(MIUI10系统)设置wifi仅连2.4赫兹
  8. 水面反光如何拍摄_如何抓拍水的不同瞬间
  9. mysql 主从 外部连接_集群之MYsql主从服务之引伸出Mysql互为主从(环形结构)外加简单实现自己个人的负载均衡器(3)-阿里云开发者社区...
  10. Apache Commons Compress 文件解压缩库