Qt实现系统资源监控 CPU Memory
时间: 2024-01-07 07:02:46 浏览: 142
要实现系统资源监控 CPU Memory,可以使用Qt的QSystemTrayIcon和QTimer组合实现系统托盘图标和定时器的功能。具体实现步骤如下:
1. 在Qt的工程中添加QSystemTrayIcon和QTimer头文件。
2. 在窗口初始化时创建系统托盘图标,并设置托盘图标的菜单和提示信息。
3. 使用定时器定时获取系统的CPU和内存使用情况,并将获取的数据显示在托盘图标的提示信息中。
4. 在定时器的槽函数中使用Qt提供的QProcess类执行系统命令获取CPU和内存的使用情况。
下面是一个简单的示例代码:
```c++
#include <QApplication>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QTimer>
#include <QProcess>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建系统托盘图标
QSystemTrayIcon trayIcon;
trayIcon.setToolTip("System Monitor");
// 创建托盘图标的菜单
QMenu *menu = new QMenu();
QAction *quitAction = new QAction("Quit", menu);
connect(quitAction, &QAction::triggered, &a, &QApplication::quit);
menu->addAction(quitAction);
trayIcon.setContextMenu(menu);
// 创建定时器并启动
QTimer timer;
timer.start(1000);
QObject::connect(&timer, &QTimer::timeout, [&]() {
// 执行系统命令获取CPU和内存的使用情况
QProcess process;
process.start("sh", QStringList() << "-c" << "top -bn1 | grep load | awk '{printf \"CPU: %.2f%%\", $(NF-2)}'; free -m | awk 'NR==2{printf \" Memory: %s/%sMB (%.2f%%)\", $3,$2,$3*100/$2}'");
process.waitForFinished();
QString result = process.readAll();
trayIcon.setToolTip(result);
});
// 显示系统托盘图标
trayIcon.show();
return a.exec();
}
```
在定时器的槽函数中,我们使用QProcess执行了两个系统命令,分别是top和free,通过管道符将它们的输出传递给awk命令进行处理,最终得到CPU和内存的使用情况。然后将获取的结果设置为托盘图标的提示信息即可。
阅读全文