2016-10-14 59 views
3

libusbをQtで正常にコンパイルしたので、USBデバイスが接続されているときと切断されたときにイベントを受信できるようになりました。QtでLinux上のUSBドライブへのパスを取得するには?

これで、ディレクトリへのパスを取得する必要があります。これは、に従ってQDir::drives()を使用できるので、Windowsではかなり簡単です。

Windowsの場合、これはC:\、F:\などを返します。これらの場所に簡単に書き込むことができます。

しかしLinuxでは、私が持っているものはすべてUSB PID and VIDであり、USBのルートへの作業パスをどのように取得するのか分かりません。そこにいくつかのファイルを書く必要がありますQFile

普遍的なクロスプラットフォームソリューションはありますか?

+1

Linux上で、USBドライブが自動的にマウントされないことに注意してください! – rubenvb

+0

私の答えの解決策はこれを扱うことができます - ちょうど 'QStorageInfo :: isValid()'を呼び出すhttp://doc.qt.io/qt-5/qstorageinfo.html#isV​​alid –

答えて

3

私は私が必要とする正確に何をすべきか、このコードを見つけました:

foreach (const QStorageInfo &storage, QStorageInfo::mountedVolumes()) { 

    qDebug() << storage.rootPath(); 
    if (storage.isReadOnly()) 
     qDebug() << "isReadOnly:" << storage.isReadOnly(); 

    qDebug() << "name:" << storage.name(); 
    qDebug() << "fileSystemType:" << storage.fileSystemType(); 
    qDebug() << "size:" << storage.bytesTotal()/1000/1000 << "MB"; 
    qDebug() << "availableSize:" << storage.bytesAvailable()/1000/1000 << "MB"; 
} 

出力:

"/run" 
name: "" 
fileSystemType: "tmpfs" 
size: 6748 MB 
availableSize: 6729 MB 
"/" 
name: "" 
fileSystemType: "ext4" 
size: 64370 MB 
availableSize: 22236 MB 
"/run/lock" 
name: "" 
fileSystemType: "tmpfs" 
size: 5 MB 
availableSize: 5 MB 
"/home" 
name: "" 
fileSystemType: "ext4" 
size: 183169 MB 
availableSize: 27305 MB 
"/run/user/1000" 
name: "" 
fileSystemType: "tmpfs" 
size: 6748 MB 
availableSize: 6748 MB 
"/media/superuser/Backups" 
name: "Backups" 
fileSystemType: "ext4" 
size: 252113 MB 
availableSize: 133173 MB 
"/media/superuser/Data" 
name: "Data" 
fileSystemType: "ext4" 
size: 732123 MB 
availableSize: 694298 MB 
"/media/superuser/BackupWD" 
name: "BackupWD" 
fileSystemType: "fuseblk" 
size: 209713 MB 
availableSize: 13144 MB 
"/media/superuser/WDSpace" 
name: "WDSpace" 
fileSystemType: "fuseblk" 
size: 790484 MB 
availableSize: 582583 MB 
関連する問題