如何使用qt列出驱动器或已安装的分区? 我试着用:
foreach( QFileInfo drive, QDir::drives() )
{
qDebug() << "Drive: " << drive.absolutePath();
}
但它只显示root驱动器。 我还注意到QDir :: drives()的长度为1,但QDir :: Drives为4。
答案 0 :(得分:4)
您需要使用特定于平台的代码。而且,请 read the docs !
返回此系统上的根目录列表。
在Windows上,它返回一个包含“C:/”,“D:/”等的QFileInfo对象列表。在其他操作系统上,它返回一个只包含一个根目录的列表(即“/”) 强>
答案 1 :(得分: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上执行时只包含一个项目(对于根文件系统)。
答案 2 :(得分:0)
您可以在 Qt 5.4 + 中使用QStorageInfo
课程,如下所示:
foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) {
if (storage.isValid() && storage.isReady()) {
if (!storage.isReadOnly()) {
// ...
}
}
}
<强> more info 强>