如何使用 qt 列出驱动器或挂载的分区?我尝试使用:
foreach( QFileInfo drive, QDir::drives() )
{
qDebug() << "Drive: " << drive.absolutePath();
}
但它只显示根驱动器。我还注意到 QDir::drives() 的长度是 1 但 QDir::Drives 是 4。
您需要使用特定于平台的代码。并且,请阅读文档!
返回此系统上的根目录列表。
在 Windows 上,这会返回包含“C:/”、“D:/”等的 QFileInfo 对象列表。在其他操作系统上,它会返回仅包含一个根目录(即“/”)的列表。
您可以使用/etc/mtab
file 获取挂载点列表。
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/安全”、“/dev”、“/dev/pts”、“/run”、“/run/lock”、“/run/shm”、“/run/user”、“/media/sf_C_DRIVE”、“/媒体/sf_C_DRIVE"、"/media/sf_D_DRIVE"、"/run/user/ri/gvfs")
请注意,QFile::atEnd()
这个文件总是返回 true,所以我没有在我的代码中使用它。
QDir::Drives
根据文档是4。它是枚举项的静态整数值,它不显示任何内容,在大多数情况下你不应该关心它。QDir::drives()
在 Linux 上执行时仅包含一项(用于根文件系统)。
您可以在Qt 5.4+QStorageInfo
中使用类,如下所示:
foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) {
if (storage.isValid() && storage.isReady()) {
if (!storage.isReadOnly()) {
// ...
}
}
}