QT/C++获取电脑CPU实时占用率

C++ Qt开发Windows实时系统监控工具:从API采集到图表展示 系统编程是C++开发者进阶的关键方向,而理解Windows API(如GetSystemTimes、GlobalMemoryStatusEx)是掌握系统资源采集的基础。实时监控工具的核心原理是通过定时采样和增量计算,获取CPU使用率、内存占用等关键指标,并在UI层以图表形式呈现。在工程实践中,这种工具价值明显:既能锻炼多线程、界面刷新与性能优化能力,又能直接应用于日常性能诊断或进程管理。许多开发者学习Qt桌面开发时,常以图表绘制和实时刷新为切入点,但缺乏一个完整的落地场景。围绕C++与Qt构建Windows 阅读详情
AI摘要

本文介绍了一种计算CPU使用率的方法,并提供了一个资源监控类实现,包括内存、网络及磁盘等各项资源的使用情况监测。

在计算CPU的占用率时,我们首先了解一下CPU使用率的计算方式,无论是单个进程cpu占用率还是系统整个cpu使用率,都是一样的计算公式:

1、cpu使用率 = 运行时间 / 间隔时间

2、运行时间 = 内核时间 + 用户时间 - 空闲时间

3、间隔时间 = 内核时间 + 用户时间

因此,根据上述公式的原理,在计算CPU使用率时需要阻塞/等待线程若干时间。由于需要阻塞线程,所以计算CPU使用率的函数是绝对不能写在主线程里的,因此另开一个线程用以计算该公式。除此之外,为了方便分析,我还增加了获取磁盘占用率与内存容量的计算。代码如下:

#ifndef RESOURCE_MINITOR_H
#define RESOURCE_MINITOR_H
#include <QObject>
#include <QTimer>
#include <QProcess>
#include <QDebug>
#include <QString>
#if defined(Q_OS_LINUX)
#include "sys/statfs.h"
#else
#pragma comment(lib,"Kernel32.lib")
#pragma comment(lib,"Psapi.lib")
#include <windows.h>
#include <tlhelp32.h>
#include<direct.h>
#include<winternl.h>
#include <psapi.h>
//#include <atlconv.h>
#include <cmath>
#include <string.h>
#endif

class MySysInfo : public QObject
{
    Q_OBJECT
public:
    explicit MySysInfo(QObject *parent = nullptr);
private slots:
    void GetResource();
public:
    bool GetMemUsage(double &nMemTotal,double &nMemUsed);
    bool GetNetUsage();
    bool GetDiskSpeed();
    bool GetCpuUsage(double &nCpuRate);
    bool GetdiskSpace(unsigned long &lFreeAll,unsigned long &lTotalAll);
    bool GetPathSpace(const QString & path);
private:
    const int m_timer_interval__ = 1000;
    QTimer monitor_timer__;
    double m_send_bytes__ = 0;
    double m_recv_bytes__ = 0;
    double m_disk_read__ = 0;
    double m_disk_write__ = 0;
    double m_cpu_total__ = 0;
    double m_cpu_use__ = 0;
};
#endif // RESOURCE_MINITOR_H
#include "mysysinfo.h"
MySysInfo::MySysInfo(QObject *parent) : QObject(parent)
{
    connect(&monitor_timer__, &QTimer::timeout, this, &MySysInfo::GetResource);
    monitor_timer__.start(m_timer_interval__);
}
void MySysInfo::GetResource()
{
    double nCpuRate = 0;
    GetCpuUsage(nCpuRate);
    GetDiskSpeed();
    double nMemTotal;
Qt C++系统资源监控工具开发:从环境搭建到功能扩展 系统监控是软件开发与运维中的基础技术,其核心原理在于通过操作系统API或读取系统文件(如/proc、PDH)实时获取硬件资源状态。这项技术的价值在于为性能分析、故障排查和资源管理提供可视化数据支撑,广泛应用于桌面工具、服务器监控和嵌入式系统等场景。本文聚焦于一个基于Qt C++的本地化监控工具项目,它通过多线程架构分离UI与数据采集,利用QChart实现CPU、内存等数据的动态可视化。该项目不依赖网络和复杂第三方库,代码结构清晰,非常适合作为课程设计或毕业设计,帮助学习者掌握系统API调用、数据可视化等核心 阅读详情

相关推荐

基于Qt与C++的跨平台系统资源监控工具开发实战

系统监控是软件开发与运维中的基础需求,它涉及对计算机核心资源(如CPU、内存、磁盘、网络)运行状态的实时感知与数据可视化。其原理通常是通过调用操作系统提供的原生API或读取系统文件(如Linux的/proc、Windows的性能计数器)来周期性采集性能数据。掌握系统监控技术对于开发高性能、高可用的软件系统具有重要价值,它能帮助开发者进行性能瓶颈分析、资源优化和故障预警。在应用场景上,从服务器运维到桌面应用开发,再到嵌入式设备管理,都离不开轻量级、定制化的监控方案。本文聚焦于使用Qt框架和C++语言,构建一个

weixin_30493401的博客 426

C++ Qt QCustomPlot实时曲线绘制:从原理到高性能实现

在工业控制、数据监控和嵌入式开发中,实时数据可视化是核心需求,它涉及将动态数据流转化为直观的图形曲线。其技术原理通常基于高效的绘图库和缓冲区管理,通过优化渲染流程来保证界面的流畅性。这项技术的价值在于能够为工程师提供实时、准确的数据洞察,是构建监控系统、测试工具和数据分析平台的基础。在应用场景上,它广泛服务于传感器数据采集、网络性能监控和工业自动化等领域。本文聚焦于使用QCustomPlot这一高性能C++绘图库,深入探讨其架构原理、动态数据缓冲区设计以及性能优化技巧,特别是针对实时曲线绘制中的卡顿问题,提

weixin_34007906的博客 487

Qt Creator实现CPU使用率分析

在进行应用程序开发的过程中,对CPU的使用情况进行分析可以帮助开发者优化程序性能,提高应用程序的响应速度和稳定性。本文介绍了在Qt Creator中实现CPU使用率分析的方法,主要涉及到获取CPU使用率信息、解析CPU使用率信息、显示CPU使用率信息三个部分。希望本文对大家有所帮助。其中,每个进程的CPU使用率位于第9列(%CPU),我们可以通过字符串分割的方式获取到每一行的信息,然后再提取出需要的进程ID和CPU使用率。获取到CPU使用率的信息后,需要对其进行解析,得到每个进程的CPU使用率。

m0_47037246的博客 2015

Qt实现实时显示CPU使用率(附完整源码)

Qt实现实时显示CPU使用率(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1438

QT性能优化【CPU占用高】

如果是死循环没有msleep 一个线程大概在我电脑上占用20%start(1000);延长时间,如果ms比较小有高的占用。线程函数中使用msleep() 让出cpu避免死循环。重新这2个函数做刷新处理。

weixin_45397344的博客 477

QT/C++实时获取CPU和内存的使用率

本资源能获取电脑的CPU和内存的使用率,也能够跨平台使用包括Windows、macOS、Linux,调用方法简单,里面是一个pri文件,直接可以加在自己的工程里面,调用方法有说明

Qt实现的实时显示CPU使用率

Qt实现的实时显示CPU使用率,希望大家喜欢

STM32 热敏电阻测量温度

1、硬件 STM32F103C8T6、热敏电阻传感器、OLED。 2、热敏电阻传感器的介绍

weixin_54721788的博客 1万+

5分钟搞定:用Ollama在MacBook上本地运行Qwen3大模型(附避坑指南)

本文详细介绍了如何在MacBook上使用Ollama快速部署和运行Qwen3大模型,包括安装步骤、性能优化技巧及常见问题解决方案。Ollama作为一款轻量级工具,特别适合M系列芯片的Mac用户,支持多种量化版本,显著降低资源消耗,提升推理速度。

sql99的博客 820

qt下使用grpc编程(2) —— 练手!自己改的一个简单小例子!1

(1)在研究了grpc官方提供的helloworld例程后,自己试着写了个小程序。 (2)编写proto文件。 proto文件用于定义服务和消息,用protobuf的语法编写,protobuf是一种通信协议,详细请百度。下面附上源码: syntax = "proto3"; option java_multiple_files = true; option java_pac

u011099079的博客 3923

AI Agent开发实战:100个真实场景题库解析

AI Agent开发涉及复杂的需求理解、架构设计及安全防护等关键技术环节。在工程实践中,开发者常面临需求偏差、系统崩溃等挑战,特别是在金融、医疗等高要求场景下。通过真实案例题库,开发者能系统性地掌握需求分析、架构决策树建模(如向量数据库选型)、安全攻防策略(如提示词注入防御)等核心技能。这些实战经验不仅能提升Agent的可用性和安全性,还能优化其在电商客服、智能家居等场景中的表现。题库采用动态难度系统,覆盖从基础到高级的开发挑战,是AI工程化落地的重要参考。

weixin_29057695的博客 342

Redash离线环境部署2020.1(centos+windows)

背景 Redash是一款开源的BI系统,核心功能是添加数据源,然后进行数据的可视化展示。一般会拿出来同Supervisor和Metabase进行选型比较,这里对三者的选型不做细致分析。而是给出在Redash开发环境部署踩过的坑,很多坑是自己琢磨出来的,网上几乎找不到更新的资料。适用于没怎么用过linux,也不怎么熟悉python的,用的是最新(master)的redash的代码(上一个发布版本...

Jone_wan的专栏 2136

Unity中URP下的菲涅尔效果实现(个性化修改)

在上篇文章中,我们实现了 URP 下的菲涅尔基础效果,我们在这篇文章中,对其进行自定义化修改。

楠溪泽岸的博客 2063

视觉定位避坑指南:基于双mark点的坐标转换常见错误排查

本文详细解析了工业视觉项目中基于双mark点的坐标转换常见错误及排查方法,涵盖旋转矩阵构建、坐标系原点选择、图像预处理优化等关键环节。通过实战案例和代码示例,帮助工程师避免定位偏差,提升系统精度,特别适用于自动化检测和精密制造场景。

7z8x2c4v6b9的博客 167

英伟达 Jetson AGX Thor 官方入门教程(二)CUDA、Docker、JetPack 设置

本文详细介绍了NVIDIA Jetson AGX Thor开发套件的安装与配置流程。主要内容包括:1) BSP安装的三种方法(Jetson ISO、SDK Manager和Linux刷写脚本)及其适用场景;2) Docker环境的完整配置步骤及测试方法;3) CUDA工具包的两种安装方式(容器化和原生安装)及其性能对比;4) JetPack SDK的安装选项。文章提供了详细的命令行操作指南和故障排除建议,帮助开发者快速搭建AI开发环境,充分发挥Jetson平台的硬件性能优势。

机器人控制与仿真应用 1731

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: RabbitMQ交换机类型
下一篇: Go中变量的生命周期
云开发者联盟
博客等级 码龄5年 546粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值