QStorageInfo类提供了系统当前挂载的存储和驱动器的相关信息,包括它们的空间,挂载点,标签名,文件系统名。

一般,我们可以使用特定的文件或目录来创建一个QStorageInfo类的对象,也可以使用其静态方法mountedVolumes()来得到当前系统中挂载的所有文件系统的列表;还可以使用root()静态方法,来获取根文件系统的相关信息,在Linux平台是即为"/"目录,在Windows平台上即为系统盘。

该类的一般使用形式如下:

QStorageInfo storage = QStorageInfo::root();

qDebug() << storage.rootPath();
if (storage.isReadOnly())
qDebug() << "isReadOnly:" << storage.isReadOnly();

qDebug() << "name:" << storage.name();
qDebug() << "fileSystemType:" << storage.fileSystemType();
qDebug() << "size:" << storage.bytesTotal()/1000/1000 << "MB";
qDebug() << "availableSize:" << storage.bytesAvailable()/1000/1000 << "MB";
注意,该类会缓存所获得的信息,我们可以在必要的使用调用它的refresh()方法来使缓存失效,从而获得最新的信息。
下面,我们使用一个Qt控制台程序,来遍历当前电脑上的所有磁盘信息:

#include <QCoreApplication>
#include <QStorageInfo>
#include <QDebug>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QList<QStorageInfo> list = QStorageInfo::mountedVolumes();
qDebug() << "Volume Num: " << list.size();
for(QStorageInfo& si : list)
{
qDebug() << "Name: " << si.name();
qDebug() << "Block Size: " << si.blockSize();
qDebug() << "Bytes Avaliable: " << si.bytesAvailable();
qDebug() << "Bytes Free: " << si.bytesFree();
qDebug() << "Bytes Total: " << si.bytesTotal();
qDebug() << "Display Name: " << si.displayName();
qDebug() << "File System Type: " << si.fileSystemType();
qDebug() << "Is ReadOnly: " << si.isReadOnly();
qDebug() << "Is Root: " << si.isRoot();
}

qDebug() << QStorageInfo::root().device();

return a.exec();
}
运行结果如下:

可以看出,当前系统上有4个驱动器,前面三个是本地硬盘,分别对应着系统,软件,文档三个分区,第四个没有名字的光驱。大家也可以在自己电脑上自行测试。
---------------------
作者:求道玉
来源:CSDN
原文:https://blog.csdn.net/Amnes1a/article/details/70154766
版权声明:本文为博主原创文章,转载请附上博文链接!

QStorageInfo获取磁盘信息(非常详细)的更多相关文章

  1. 主机性能监控之wmi 获取磁盘信息

    标 题: 主机性能监控之wmi 获取磁盘信息作 者: itdef链 接: http://www.cnblogs.com/itdef/p/3990541.html 欢迎转帖 请保持文本完整并注明出处 仅 ...

  2. 通过kfed自动获取磁盘信息的小脚本

    通过kfed自动获取磁盘信息的小脚本 编译KFED [oracle@rac lib]$cd $ORACLE_HOME/rdbms/lib [oracle@rac lib]$ pwd /u01/app/ ...

  3. Powershell获取磁盘信息

    使用Powershell完成系统管理实在是太方便了,磁盘信息获取只需几行代码即可. 1: $DiskCount = ((Get-WmiObject -Class Win32_DiskDrive).Ca ...

  4. golang ---获取磁盘信息

    package main import ( "fmt" "github.com/StackExchange/wmi" ) type Storage struct ...

  5. C#-获取磁盘,cpu,内存信息

    获取磁盘信息 zongdaxiao = GetHardDiskSpace("C") * 1.0 / 1024; user = GetHardDiskFreeSpace(" ...

  6. Java运用第三方开源jar包sigar.jar获取服务器信息

    通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 一.准备工作 (1)下载jar包和相关文件 资源链接:百度云:链接:https://pan.baidu.com/s/1nxccJHJ ...

  7. 使用Sigar获取服务器信息

    Sigar简介 Sigar是Hyperic-hq产品的基础包,是Hyperic HQ主要的数据收集组件.它用来从许多平台收集系统和处理信息. 这些平台包括:Linux, Windows, Solari ...

  8. [WinAPI] API 8 [获取磁盘空间信息]

    获取磁盘分区的总容量和空闲空间的容量可以使用GetDiskFreeSpace函数或GetDiskFree SpaceEx函数.GetDiskFreeSpace使用DWORD类型作为输出参数,由于DWO ...

  9. windows程序设计 获取磁盘容量

    //磁盘分区的总容量(字节)=总簇数*每簇扇区数*每扇区字节数 //磁盘分区的空闲空间(字节)=空闲簇数*每簇扇区数*每扇区字节数 BOOL GetDiskFreeSpace( LPCTSTR lpR ...

随机推荐

  1. oracle 查询前30条数据

     select * from (select a.*,rownum as rn from tetm_ad_type  a) b where b.rn<30 --表名不能用as 字段取别名,直 ...

  2. linux下Oracle数据库实例开机自启动设置

    linux下数据库实例开机自启动设置 1.改动/oratab [root@org54 ~]# vi/etc/oratab     --把N改为Y,例如以下提示 # This file is used ...

  3. TCP协议的三次握手和四次挥手过程

    TCP是一种面向连接(连接导向)的.可靠的基于字节流的传输层通信协议.TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认.对失序的数据重新排序.丢弃重复数据. 1.TCP/ ...

  4. 如何用手机访问电脑上的html文件

    如何用手机访问电脑上的html文件 梦唪 | 浏览 3876 次 推荐于2016-03-26 08:08:58   最佳答案   1,你得搭建服务器,用Apache或者IIS.2,把HTML文件放到服 ...

  5. Unix系统编程()main函数的命令行参数

    命令行参数输入双引号是什么效果? 好像可以去空格化.

  6. 网站真分页js代码该怎么写?

    真分页这个词对程序猿们来说,并不是一个陌生的词汇,但是如果你是初次学习真分页,或许还是得花点时间小小研究下,下面是之前去转盘网(喜欢的可以看看,也可以进入引擎模式)的真分页js部分代码,html部分的 ...

  7. flutter table 在showModalBottomSheet中

    问题是,不知道为什么又可以了.原来是显示黑屏,没有输出. showModalBottomSheet<void>( context: context, builder: (BuildCont ...

  8. 偶遇 sqlserver 参数嗅探

    需求: 费用统计 环境: 查询设计多张大表 解决方案: 优化查询语句,封装成存储过程,建立索引,最终查询速度很不错.部署上线,告一段落... 一段时间后投诉来了... 客户投诉说查询没内容,我看了日志 ...

  9. 编写可维护的JavaScript----笔记(一)

    1.缩进层级 建议使用4个空格为一个缩进层级,避免使用制表符进行缩进,可以通过配置文本编辑器来改变 缩进层级表示的内容. 2.语句末尾 有赖于分析器的自动分号插入机制(ASI),JavaScript可 ...

  10. 使用AllocConsole()添加调试用控制台

    AllocConsole 函数 为调用进程分配一个新的控制台. 使用步骤: 1. AllocConsole(); //分配控制台 2. HANDLE  g_hOutput=GetStdHandle( ...