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

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

一、环境介绍

操作系统:  ubuntu 18.04 64位  PC机

QT版本:  5.12

二、运行效果图

image.png

三、核心代码

mainwindow.cpp代码:

#include "widget.h"
#include "ui_widget.h"
#include <QProcess>
#include <QDebug>
#include <sys/sysinfo.h>
#include <QTimer>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QTimer::singleShot(1000, this, SLOT(GetSystemInfo()));
}
void Widget::GetSystemInfo(void)
{
    /*1. 获取当前系统磁盘使用情况*/
    /*
     * 格式:  /dev/sda1        49G   38G  9.3G   81% /
     */
    QProcess process;
    process.start("df -h");
    process.waitForFinished();
    QByteArray output = process.readAllStandardOutput();
    QString str_output = output;
    str_output=str_output.mid(str_output.indexOf("/dev/sda1"));
    //得到: /dev/sda1        49G   38G  9.3G   81%
    str_output=str_output.section('/',0,2);
    str_output=str_output.section(' ',1);
    //将多个空格换成单个空格
    str_output=str_output.replace(QRegExp("[\\s]+"), " ");
    QString text;
    text="磁盘总容量: "+str_output.section(' ',1,1)+"\n";
    text+="已用: "+str_output.section(' ',2,2)+"\n";
    text+="可用: "+str_output.section(' ',3,3);
    //获取百分比
    ui->progressBar_rom->setValue(str_output.section(' ',4,4).section('%',0,0).toInt());
    ui->label_ROM->setText(text);
    /*2. 获取当前系统内存使用情况*/
    struct sysinfo s_info;
    if(sysinfo(&s_info)==0)
    {
        text=tr("总内存: %1 KB\n").arg(s_info.totalram/1024);
        text+=tr("未使用内存: %1 KB\n").arg(s_info.freeram/1024);
        text+=tr("交换区总内存: %1 KB\n").arg(s_info.totalswap/1024);
        text+=tr("交换区未使用内存: %1 KB\n").arg(s_info.freeswap/1024);
        text+=tr("系统运行时间: %1s").arg(s_info.uptime);
        ui->label_RAM->setText(text);
    }
     QTimer::singleShot(1000, this, SLOT(GetSystemInfo()));
}
Widget::~Widget()
{
    delete ui;
}

mainwindow.h代码:

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private slots:
    void GetSystemInfo(void);
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

image.png

目录
相关文章
|
4月前
|
Ubuntu Linux Shell
Linux系统中如何查看磁盘情况
【9月更文挑战第3天】在Linux系统中,有多种方式查看磁盘情况。可通过命令行工具`df`查看文件系统磁盘使用情况,选项`-h`以人类可读格式显示,`-T`显示文件系统类型;`du`命令显示目录或文件磁盘使用情况,`-h`以人类可读格式显示,`-s`仅显示总计;`fdisk -l`列出磁盘和分区信息。此外,图形界面的磁盘管理工具和文件管理器也可用于查看磁盘使用情况。这些方法有助于更好地管理磁盘空间。
780 4
|
3月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
136 1
Linux系统之Centos7安装cockpit图形管理界面
|
3月前
|
存储 Windows
(13) Qt事件系统(two)
文章详细介绍了Qt事件系统,包括事件分发、自定义事件、事件传播机制、事件过滤以及事件与信号的区别。
133 3
(13) Qt事件系统(two)
|
4月前
|
存储 Linux 5G
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
这篇文章介绍了LVM(逻辑卷管理)如何提供灵活的磁盘管理方式,允许动态调整逻辑卷的大小而不会丢失数据。
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
|
3月前
|
编译器
【项目开发】QT简单练习之QQ登录界面模仿
为了进一步加深对QT开发的理解,在学习完基础操作之后要进行一个简单的练习。
|
3月前
|
编解码 程序员
(12)Qt事件系统(one)
本文详细介绍了Qt事件系统,包括各种系统事件、鼠标事件、键盘事件、定时器等的处理方法和示例代码。
114 0
|
3月前
|
Unix Linux 对象存储
Linux 磁盘管理
Linux 磁盘管理
51 1
|
3月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
76 0
|
3月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
58 0
|
5月前
|
存储 监控 Linux