查看完整版本: [-- Qt编写获取CPU占用率、内存信息、硬盘容量、已运行时间等功能 --]

QTCN开发网 -> Qt 作品展 -> Qt编写获取CPU占用率、内存信息、硬盘容量、已运行时间等功能 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

liudianwu 2016-01-29 15:18

Qt编写获取CPU占用率、内存信息、硬盘容量、已运行时间等功能

1:封装成一个类,直接调用即可。已经在多个商业项目中使用。
2:所有功能全平台 win linux armlinux 亲测无误,网络上的基本上是烂的或者不可用的,不知道走过多少弯路。
3:linux下CPU占用率的计算非常准确,支持多核。
4:硬盘容量计算极速。进度条显示占用比例。
5:多彩数码管实时显示当前时间。
6:自定义颜色下拉框,选择即可看到效果。
完整源码下载:[attachment=14777]
V20160531更新说明:如果QT4.8以下版本出现不能正确获取CPU内存等信息,则将对应cpp文件前面改为:
  1. #ifdef Q_OS_WIN
    #ifndef _WIN32_WINNT
    #define _WIN32_WINNT 0x502
    #endif
    #include "windows.h"
    #endif
    #define MB (1024 * 1024)
    #define KB (1024)

V20160531版本运行截图:
[attachment=15277]
[attachment=15278]
V20160531版本下载:[attachment=15279]

枫界易城 2016-01-29 17:22
[attachment=14778]有一个问题在win7下cpu和内存使用情况显示不出来

yl19823442 2016-01-29 20:23
刘大师又分享精品了。

liudianwu 2016-01-29 21:01
qt必须是4.8.5以上!那个windows.h在4.8以下版本很多win api声明函数没有!

gavin_8724 2016-01-31 13:17
学习Qt,现在处于努力 提高阶段

realfan 2016-01-31 15:13
感谢刘大师分享的好多代码

hehui 2016-02-01 09:47
你这个没有办法获取每一个CPU内核的使用率吧

stlcours 2016-02-01 17:01
liudianwu:qt必须是4.8.5以上!那个windows.h在4.8以下版本很多win api声明函数没有! (2016-01-29 21:01) 

请问这个windows.h是mingw的,还是QT的?如果是前者,那么和QT的版本应该没关系?

liudianwu 2016-02-15 11:01
stlcours:请问这个windows.h是mingw的,还是QT的?如果是前者,那么和QT的版本应该没关系? (2016-02-01 17:01) 

是qt的windows.h

badboylzc 2016-02-15 12:08
一楼说的问题的确存在

z609932088 2016-02-16 09:53
一万个膜拜,下载下来,编译看了一下,感谢大神分享精品

檬茶茶 2016-02-16 16:39
Window7中运行这个程序显示的汉字为乱码,要怎么修改才能正常显示呢?

kangat 2016-02-17 15:53
顶一个

2054131 2016-02-22 16:40
感谢刘大师分享的好多代码

chrisv 2016-02-25 08:30
感谢大 神的无私奉献

梦想世界 2016-03-02 12:08
非常感谢,非常感谢!!!!

liuyuanan 2016-03-03 10:06
感谢刘大师分享的好多代码,向刘大师学习

yuxue 2016-03-03 11:07
ARM linux 不能获取硬盘 盘符 cpu 使用率 永远比我 top 出来的 多

查看源码 可能因为平台问题 硬盘获取不到 修改源码 解决

已经运行时间 本以为 获取系统 开机运行时间 原来 是程序运行时间

cpu 问题 原来是双核的原因 造成不准确

hunterzf 2016-03-14 20:17
非常感谢

morningning 2016-05-16 14:20
可以在把完整源码在分享一下吗。上面那个下载下来提示损坏,感谢大神

morningning 2016-05-16 14:27
可以有时间把完整代码发到邮箱吗?这个下载下了提示损坏了,邮箱:morningningls@163.com

ap0704203 2016-06-04 18:53
群主,你那C#的群荒废了,原来你在这搞QT了啊,牛逼!

liudianwu 2016-06-04 19:50
ap0704203:群主,你那C#的群荒废了,原来你在这搞QT了啊,牛逼! (2016-06-04 18:53) 

是啊,主五年没有弄C#了!项目都是用Qt,所以主要研究Qt了。你也改Qt了?

ysu533 2016-11-03 17:45
CPU 利用率, 楼主没发现在win平台会出现负数吗?  CPU利用率高的时候会出现负数. 搜了下, 问这个问题的人还挺多的, 但是没找到解决方法.

另外搜索时发现很多知名的硬件工具软件也有这个问题, 但是win自带的任务管理器就没问题, 看来微软用的方法还是不一样的.

kccyp 2016-11-17 02:39
感谢分享

chase_hong 2017-01-16 15:57
ysu533:CPU 利用率, 楼主没发现在win平台会出现负数吗?  CPU利用率高的时候会出现负数. 搜了下, 问这个问题的人还挺多的, 但是没找到解决方法.
另外搜索时发现很多知名的硬件工具软件也有这个问题, 但是win自带的任务管理器就没问题, 看来微软用的方法还是不一样的. (2016-11-03 17:45) 

我也遇到这个问题,你找到方法解决了吗?

sunshine9569 2017-05-18 23:14
太赞啦,一定要认真看!谢谢大神分享,希望可以继续学习

羊小狼 2017-06-22 10:16
楼主,附件下载是“job.PHP”? 是不是更新下代码,谢谢!

445146313 2018-01-25 11:15
chase_hong:我也遇到这个问题,你找到方法解决了吗? (2017-01-16 15:57) 

系统多核   数字过大溢出了。。

445146313 2018-01-25 11:18
445146313:系统多核   数字过大溢出了。。 (2018-01-25 11:15) 

unsigned long int a = value.toUInt();  找到bug所在了   toInt不行  要用这个

yangzi8000 2018-01-28 22:13
.....................

yanhuazhui 2018-07-17 15:24
请问有显示cpu温度的代码吗

liudianwu 2018-07-17 16:22
yanhuazhui:请问有显示cpu温度的代码吗 (2018-07-17 15:24) 

cpu_freq即可

yanhuazhui 2018-07-17 16:41
445146313:unsigned long int a = value.toUInt();  找到bug所在了   toInt不行  要用这个 (2018-01-25 11:18) 

请问具体在哪里

yanhuazhui 2018-07-17 16:44
liudianwu:cpu_freq即可 (2018-07-17 16:22) 

这个不是检测频率的吗,还能用来检测温度?

591115204 2018-07-19 22:58
顶顶顶

wting_0128 2018-09-25 22:41
    

john123456 2019-07-23 15:06
不错,很好的参考

gjwgogo 2019-11-12 11:18
谢谢!对我项目帮助特别大

glosing 2020-01-03 10:15
楼主能再发一份么,下了打不开压缩包了,万分多谢。

liudianwu 2020-01-03 16:25
glosing:楼主能再发一份么,下了打不开压缩包了,万分多谢。 (2020-01-03 10:15) 

可以去我的开源主页下载 https://gitee.com/feiyangqingyun/QWidgetDemo

qiumengj 2020-04-17 11:41
void ShowCPUMemory::GetCPU() 中 ,拼接高字节和低字节的部分,不应该是左移32位吗,楼主为何是左移31位

mountainhigh 2021-02-09 11:57
学习Qt,现在处于努力 提高阶段

linsq97 2021-04-28 13:51
445146313:系统多核   数字过大溢出了。。 (2018-01-25 11:15) 

我遇到的问题是测出来的cpu利用率跟win下的任务管理器里显示的数值差的有点多,并不准确。另外有时候也会有负数的情况

walle095 2021-06-03 10:11
刚开始学习QT 感谢大神的分享 学习到很多

100173344 2021-10-31 01:09
445146313:unsigned long int a = value.toUInt();  找到bug所在了   toInt不行  要用这个 (2018-01-25 11:18) 

确实是数字过大溢出了, 不过应该在 int idle, kernel, user; 改成 quint64 idle, kernel, user; 就好了
因为这三个变量要做计算,int32 计算 (kernel + user - idle) * 100 很容易就溢出了,


查看完整版本: [-- Qt编写获取CPU占用率、内存信息、硬盘容量、已运行时间等功能 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled