2

qt を使用してドライブまたはマウントされたパーティションを一覧表示するにはどうすればよいですか? 私は使用しようとしました:

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

ただし、ルートドライブのみが表示されます。また、QDir::drives() の長さは 1 ですが、QDir::Drives は 4 であることにも気付きました。

4

3 に答える 3

5

プラットフォーム固有のコードを使用する必要があります。そして、ドキュメントを読んでください!

このシステムのルート ディレクトリのリストを返します。

Windows では、これは "C:/"、"D:/" などを含む QFileInfo オブジェクトのリストを返します。他のオペレーティング システムでは、1 つのルート ディレクトリ (つまり "/") だけを含むリストを返します。

于 2013-06-07T11:02:49.520 に答える
5

/etc/mtabfile を使用して、マウントポイントのリストを取得できます。

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")

このファイルに対して常に true を返すことに注意してください。そのQFile::atEnd()ため、コードでは使用しませんでした。

QDir::Drivesドキュメントによると 4 です。これは列挙項目の静的な整数値であり、何も表示されず、ほとんどの場合気にする必要はありません。QDir::drives()Linux で実行した場合、(ルート ファイルシステムの) アイテムが 1 つだけ含まれます。

于 2013-06-07T12:09:27.573 に答える