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

问题描述 投票:2回答:3

如何使用qt列出驱动器或已安装的分区?我试着用:

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

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

c++ linux qt qt5 qdir
3个回答
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上执行时只包含一个项目(对于根文件系统)。


4
投票

您需要使用特定于平台的代码。而且,拜托,QDir::drives()

返回此系统上的根目录列表。

在Windows上,它返回一个包含“C:/”,“D:/”等的QFileInfo对象列表。在其他操作系统上,它返回一个只包含一个根目录(即“/”)的列表。


0
投票

Qt 5.4+

您可以在Qt 5.4+中使用read the docs类,如下所示:

QStorageInfo

foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) { if (storage.isValid() && storage.isReady()) { if (!storage.isReadOnly()) { // ... } } }

© www.soinside.com 2019 - 2024. All rights reserved.