《原始传奇》官方网站,知名企业网站规划书,顾客评价网站,搜索优化引擎第三代软件开发-系统监测 文章目录 第三代软件开发-系统监测项目介绍系统监测 关键字#xff1a;
Qt、
Qml、
cpu、
内存、memory 项目介绍 欢迎来到我们的 QML C 项目#xff01;这个项目结合了 QML#xff08;Qt Meta-Object Language#xff09;和 C 的强大功…
第三代软件开发-系统监测 文章目录 第三代软件开发-系统监测项目介绍系统监测 关键字
Qt、
Qml、
cpu、
内存、memory 项目介绍 欢迎来到我们的 QML C 项目这个项目结合了 QMLQt Meta-Object Language和 C 的强大功能旨在开发出色的用户界面和高性能的后端逻辑。 在项目中我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件我们能够迅速开发出丰富多样的界面效果和动画效果。同时我们利用 QML 强大的集成能力轻松将 C 的底层逻辑和数据模型集成到前端界面中。 在后端方面我们使用 C 编写高性能的算法、数据处理和计算逻辑。C 是一种强大的编程语言能够提供卓越的性能和可扩展性。我们的团队致力于优化代码减少资源消耗以确保我们的项目在各种平台和设备上都能够高效运行。 无论您是对 QML 和 C 开发感兴趣还是需要我们为您构建复杂的用户界面和后端逻辑我们都随时准备为您提供支持。请随时联系我们让我们一同打造现代化、高性能的 QML C 项目 重要说明☝
☀该专栏在第三代软开发更新完将涨价
系统监测
这个其实是一个临时起意不属于原本的圆形设计就是什么呢我们的程序在启动后是会置顶全品显示则就导致我们想看系统CPU占用率和内存使用率变得空难也不是不可以就是得再接一块屏幕出来所以就加了一个功能。代码如下
头文件
#ifndef XXXX_SYSTEMINFOR_H
#define XXXX_SYSTEMINFOR_H#include QObject
#include QTimer
class XXXX_SystemInfor : public QObject
{Q_OBJECTQ_PROPERTY(double cpuRate READ cpuRate WRITE setCpuRate NOTIFY cpuRateChanged FINAL) // CPU使用率Q_PROPERTY(double memoryUseed READ memoryUseed WRITE setMemoryUseed NOTIFY memoryUseedChanged FINAL) // 内存使用Q_PROPERTY(double memoryTotal READ memoryTotal WRITE setMemoryTotal NOTIFY memoryTotalChanged FINAL) // 内存总量public:explicit XXXX_SystemInfor(QObject *parent nullptr);~XXXX_SystemInfor();static XXXX_SystemInfor *getInstance();double cpuRate() const;void setCpuRate(double newCpuRate);double memoryUseed() const;void setMemoryUseed(double newMemoryUseed);double memoryTotal() const;void setMemoryTotal(double newMemoryTotal);signals:void cpuRateChanged();void memoryUseedChanged();void memoryTotalChanged();protected:void getCpuRate();void getMemoryRate();
private:QTimer* m_getSysInfor nullptr;double m_cpuRate 0;double m_memoryUseed 0;double m_memoryTotal 0;
};#endif // XXXX_SYSTEMINFOR_H
源文件 #include XXXX_systeminfor.h
#include qdebug.h
#include qprocess.h
#include unistd.h
Q_GLOBAL_STATIC(XXXX_SystemInfor,XXXX_SystemInfor) // 单例宏
XXXX_SystemInfor::XXXX_SystemInfor(QObject *parent): QObject{parent}
{m_getSysInfor new QTimer(this);m_getSysInfor-setInterval(1000 * 2);connect(m_getSysInfor,QTimer::timeout,this,[](){getCpuRate();getMemoryRate();});m_getSysInfor-start();
}
/*** brief XXXX_SystemInfor::~XXXX_SystemInfor* 析构函数*/
XXXX_SystemInfor::~XXXX_SystemInfor()
{m_getSysInfor-stop();
}
/*** brief XXXX_SystemInfor::getInstance* return* 获取单例*/
XXXX_SystemInfor *XXXX_SystemInfor::getInstance()
{return XXXX_SystemInfor;
}
/*** brief XXXX_SystemInfor::cpuRate* return* 获取cpu使用率* linux下使用mpstat命令获取* sudo apt-get install sysstat* V 2.0 使用top命令获取* V 2.1 使用sar命令获取* 最终使用V 1.0版本*/
void XXXX_SystemInfor::getCpuRate()
{
#ifdef Q_OS_LINUX// QProcess process;
// /// 使用mpstat命令获取CPU使用率
// QString program sar;
// QStringList arguments;
// /// 获取所有CPU核心的使用率
// arguments -u 1 1;
// process.start(program, arguments);
// /// 等待进程完成
// process.waitForFinished();// process.readLine();
// process.readLine();
// process.readLine();
// process.readLine();
// QString str process.readLine();
// str.replace(\n,);
// str.replace(QRegExp(( ){1,}), );
// auto lst str.split( );// if(lst.size() 6)
// {// if(lst.last().toDouble() 0)
// setCpuRate(100.00 - lst.last().toDouble());
// // qDebug() lst.at(7).toDouble();
// }// QProcess process;
// /// 使用mpstat命令获取CPU使用率
// QString program top;
// QStringList arguments;
// /// 获取所有CPU核心的使用率
// arguments -b -n 1 -i -c;
// process.start(program, arguments);
// /// 等待进程完成
// process.waitForFinished();// process.readLine();
// process.readLine();
// QString str process.readLine();
// str.replace(\n,);
// str.replace(QRegExp(( ){1,}), );
// auto lst str.split( );
// if(lst.size() 10)
// {
// if(lst.at(7).toDouble() 0)
// setCpuRate(100.00 - lst.at(7).toDouble());qDebug() lst.at(7).toDouble();
// }QProcess process;/// 使用mpstat命令获取CPU使用率QString program /usr/bin/mpstat;QStringList arguments;/// 获取所有CPU核心的使用率arguments -P ALL;process.start(program, arguments);/// 等待进程完成process.waitForFinished();process.readLine();process.readLine();process.readLine();QString str process.readLine();str.replace(\n,);str.replace(QRegExp(( ){1,}), );auto lst str.split( );if(lst.size() 10)setCpuRate(100.0 - lst.last().toDouble());#endif
}/*** brief XXXX_SystemInfor::getMemoryRate* return* 获取内存使用率*/
void XXXX_SystemInfor::getMemoryRate()
{#ifdef Q_OS_LINUXQProcess process;/// 使用free完成获取process.start(free -m);process.waitForFinished();process.readLine();QString str process.readLine();str.replace(\n,);/// 将连续空格替换为单个空格 用于分割str.replace(QRegExp(( ){1,}), );auto lst str.split( );if(lst.size() 6){setMemoryTotal(lst[1].toDouble());setMemoryUseed(lst[1].toDouble() - lst[6].toDouble());}
#endif
}/*** brief XXXX_SystemInfor::setMemoryRate* param newMemoryRate* CPU 使用率*/
double XXXX_SystemInfor::cpuRate() const
{return m_cpuRate;
}
/*** brief XXXX_SystemInfor::setCpuRate* param newCpuRate* 设置 CPU 使用率*/
void XXXX_SystemInfor::setCpuRate(double newCpuRate)
{// if (qFuzzyCompare(m_cpuRate, newCpuRate))// return;m_cpuRate newCpuRate;emit cpuRateChanged();
}double XXXX_SystemInfor::memoryUseed() const
{return m_memoryUseed;
}void XXXX_SystemInfor::setMemoryUseed(double newMemoryUseed)
{// if (qFuzzyCompare(m_memoryUseed, newMemoryUseed))// return;m_memoryUseed newMemoryUseed;emit memoryUseedChanged();
}double XXXX_SystemInfor::memoryTotal() const
{return m_memoryTotal;
}void XXXX_SystemInfor::setMemoryTotal(double newMemoryTotal)
{// if (qFuzzyCompare(m_memoryTotal, newMemoryTotal))// return;m_memoryTotal newMemoryTotal;emit memoryTotalChanged();
}