#c #linux #qt
#c #linux #qt
Вопрос:
Я успешно скомпилировал libusb с помощью Qt и теперь могу получать события при подключении и отключении USB-устройства.
Теперь мне нужно получить путь к каталогу. Это кажется довольно простым в Windows, так как я могу использовать QDir::drives()
в соответствии с документацией Qt.
Итак, для Windows это возвращает C: , F: и т. Д., И я могу легко записывать в эти места.
Однако в Linux все, что у меня есть, это USB PID и VID, и я понятия не имею, как получить рабочий путь к корню USB. Мне нужно записать туда несколько файлов, используя QFile
Существует ли универсальное кроссплатформенное решение?
Комментарии:
1. Обратите внимание, что в Linux USB-накопители могут не монтироваться автоматически!
2.решение в моем ответе может позаботиться об этом — просто позвоните
QStorageInfo::isValid()
doc.qt.io/qt-5/qstorageinfo.html#isValid
Ответ №1:
Я нашел этот код, который делает именно то, что мне нужно:
foreach (const QStorageInfo amp;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