c++ - [Qt][Linux] 列出驱动器或分区

标签 c++ linux qt qt5 qdir

我如何使用 qt 列出驱动器或挂载的分区? 我尝试使用:

foreach( QFileInfo drive, QDir::drives() )
       {
         qDebug() << "Drive: " << drive.absolutePath();
       }

但它只显示根驱动器。 我还注意到 QDir::drives() 的长度为 1,但 QDir::Drives 为 4。

最佳答案

您可以使用/etc/mtab 文件来获取挂载点列表。

QFile file("/etc/mtab");
if (file.open(QFile::ReadOnly)) {
  QStringList mountpoints;
  while(true) {
    QStringList parts = QString::fromLocal8Bit(file.readLine()).trimmed().split(" ");
    if (parts.count() > 1) {
      mountpoints << parts[1];
    } else {
      break;
    }
  }
  qDebug() << mountpoints;
}

我机器上的输出:

("/", "/proc", "/sys", "/sys/fs/cgroup", "/sys/fs/fuse/connections", "/sys/kernel/debug", "/sys/kernel/security", "/dev", "/dev/pts", "/run", "/run/lock", "/run/shm", "/run/user", "/media/sf_C_DRIVE", "/media/sf_C_DRIVE", "/media/sf_D_DRIVE", "/run/user/ri/gvfs")

请注意,对于此文件,QFile::atEnd() 始终返回 true,因此我没有在我的代码中使用它。

根据文档,

QDir::Drives 为 4。它是枚举项的静态整数值,它不显示任何内容,在大多数情况下你不应该关心它。 QDir::drives() 在 Linux 上执行时只包含一项(对于根文件系统)。

关于c++ - [Qt][Linux] 列出驱动器或分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16981955/

相关文章:

c++ - 将类实例和方法作为参数传递给 C++ 中的另一个函数

c++ multimap equal_range 一无所获

linux - 如何使用 sed 或 awk 从路径中提取文件名

c++ - windows下的Qt Application和window Icon

javascript - Golang中如何使用javascript获取特定网站元素或提交表单

c++ - 需要一种简单的方法来在 html 中显示 word 文档

c++ - 在实例变量中定义字段会导致所有实例字段相同

linux - 如何授予普通用户 shell 访问特定文件夹的权限

linux - 在 cron 中运行 bash 脚本

c++ - 我可以将 should.js 与 QtScript 一起使用吗?