如何使用qt列出驱动器或已安装的分区?我试着用:
foreach( QFileInfo drive, QDir::drives() )
{
qDebug() << "Drive: " << drive.absolutePath();
}
但它只显示根驱动器。我还注意到QDir :: drives()的长度为1,但QDir :: Drives为4。
您可以使用qazxsw poi文件来获取挂载点列表。
/etc/mtab
我机器上的输出:
(“/”,“/ 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 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;
}
始终为此文件返回true,因此我没有在我的代码中使用它。
根据文件,QFile::atEnd()
是4。它是枚举项的静态整数值,它没有显示任何内容,在大多数情况下你不应该关心它。 QDir::Drives
在Linux上执行时只包含一个项目(对于根文件系统)。
您需要使用特定于平台的代码。而且,拜托,QDir::drives()
!
返回此系统上的根目录列表。
在Windows上,它返回一个包含“C:/”,“D:/”等的QFileInfo对象列表。在其他操作系统上,它返回一个只包含一个根目录(即“/”)的列表。
您可以在Qt 5.4+中使用read the docs类,如下所示:
QStorageInfo
foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) {
if (storage.isValid() && storage.isReady()) {
if (!storage.isReadOnly()) {
// ...
}
}
}