Linux下获取系统的磁盘使用情况、内存使用情况使用QT界面进行显示

举报
DS小龙哥 发表于 2021/12/09 23:43:45 2021/12/09
【摘要】 一、环境介绍 操作系统:  ubuntu 18.04 64位  PC机 QT版本:  5.12 二、运行效果图 三、核心代码 mainwindow.cpp代码: #include "widget.h"#include "ui_widget.h"#include <QProcess&gt...

一、环境介绍

操作系统:  ubuntu 18.04 64位  PC机

QT版本:  5.12

二、运行效果图

三、核心代码

mainwindow.cpp代码:


  
  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QProcess>
  4. #include <QDebug>
  5. #include <sys/sysinfo.h>
  6. #include <QTimer>
  7. Widget::Widget(QWidget *parent)
  8. : QWidget(parent)
  9. , ui(new Ui::Widget)
  10. {
  11. ui->setupUi(this);
  12. QTimer::singleShot(1000, this, SLOT(GetSystemInfo()));
  13. }
  14. void Widget::GetSystemInfo(void)
  15. {
  16. /*1. 获取当前系统磁盘使用情况*/
  17. /*
  18. * 格式: /dev/sda1 49G 38G 9.3G 81% /
  19. */
  20. QProcess process;
  21. process.start("df -h");
  22. process.waitForFinished();
  23. QByteArray output = process.readAllStandardOutput();
  24. QString str_output = output;
  25. str_output=str_output.mid(str_output.indexOf("/dev/sda1"));
  26. //得到: /dev/sda1 49G 38G 9.3G 81%
  27. str_output=str_output.section('/',0,2);
  28. str_output=str_output.section(' ',1);
  29. //将多个空格换成单个空格
  30. str_output=str_output.replace(QRegExp("[\\s]+"), " ");
  31. QString text;
  32. text="磁盘总容量: "+str_output.section(' ',1,1)+"\n";
  33. text+="已用: "+str_output.section(' ',2,2)+"\n";
  34. text+="可用: "+str_output.section(' ',3,3);
  35. //获取百分比
  36. ui->progressBar_rom->setValue(str_output.section(' ',4,4).section('%',0,0).toInt());
  37. ui->label_ROM->setText(text);
  38. /*2. 获取当前系统内存使用情况*/
  39. struct sysinfo s_info;
  40. if(sysinfo(&s_info)==0)
  41. {
  42. text=tr("总内存: %1 KB\n").arg(s_info.totalram/1024);
  43. text+=tr("未使用内存: %1 KB\n").arg(s_info.freeram/1024);
  44. text+=tr("交换区总内存: %1 KB\n").arg(s_info.totalswap/1024);
  45. text+=tr("交换区未使用内存: %1 KB\n").arg(s_info.freeswap/1024);
  46. text+=tr("系统运行时间: %1s").arg(s_info.uptime);
  47. ui->label_RAM->setText(text);
  48. }
  49. QTimer::singleShot(1000, this, SLOT(GetSystemInfo()));
  50. }
  51. Widget::~Widget()
  52. {
  53. delete ui;
  54. }

mainwindow.h代码:


  
  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. QT_BEGIN_NAMESPACE
  5. namespace Ui { class Widget; }
  6. QT_END_NAMESPACE
  7. class Widget : public QWidget
  8. {
  9. Q_OBJECT
  10. public:
  11. Widget(QWidget *parent = nullptr);
  12. ~Widget();
  13. private slots:
  14. void GetSystemInfo(void);
  15. private:
  16. Ui::Widget *ui;
  17. };
  18. #endif // WIDGET_H

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/105677291

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。