簡體   English   中英

[Qt] [Linux]列出驅動器或分區

[英][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+

您可以在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM