[英][Qt][Linux] List drive or partitions
如何使用qt列出驅動器或已安裝的分區? 我試着用:
foreach( QFileInfo drive, QDir::drives() )
{
qDebug() << "Drive: " << drive.absolutePath();
}
但它只顯示根驅動器。 我還注意到QDir :: drives()的長度為1,但QDir :: Drives為4。
您需要使用特定於平台的代碼。 而且,請閱讀文檔 !
返回此系統上的根目錄列表。
在Windows上,它返回一個包含“C:/”,“D:/”等的QFileInfo對象列表。 在其他操作系統上,它返回一個只包含一個根目錄(即“/”)的列表。
您可以使用/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。 它是枚舉項的靜態整數值,它沒有顯示任何內容,在大多數情況下你不應該關心它。 在Linux上執行時, QDir::drives()
包含一個項目(對於根文件系統)。
您可以在Qt 5.4+中使用QStorageInfo
類,如下所示:
foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) {
if (storage.isValid() && storage.isReady()) {
if (!storage.isReadOnly()) {
// ...
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.