我需要为用户提供一系列已安装的驱动器以进行程序。下面的 fragment 将向我展示驱动器挂载所在目录的内容。我怎样才能解析出sd?来自 QString“命令”的值(sda1、sdb1 等)并将它们提供给用户供选择?列表框?请教如何。
QProcess mount_dir;
mount_dir.setProcessChannelMode(QProcess::MergedChannels);
cstring = adb + " -s " + daddr+port + " shell su -c ls /storage/;
mount_dir.start(cstring);
mount_dir.waitForFinished(-1);
command=mount_dir.readAll();
最佳答案
看来您是在重新发明轮子。请考虑使用 QStorageInfo对于这个任务,即:
Q_PROPERTY(QStringList allLogicalDrives READ allLogicalDrives NOTIFY logicalDriveChanged)
它可能无法移植到 Android,但这应该很容易做到。无需为此运行 QProcess,只需将平台特定的 API 与 QtAndroidExtras
一起使用即可。
至于 ListView 问题,使用这个 QML:
ListView {
...
model: myStringListProprety
// or: model: myClass.myStringListAccessor()
}
所以,基本上您要么创建一个属性(这是我的建议),要么在 C++ 中创建插槽/可调用方法。如果您使用过 QStorageInfo,那么您就可以准备就绪,因为目标属性已经存在于那里。同样,它可能需要特定于 Android 的后端调整,但这种对类的摆弄也会使其他人受益!
关于android - 捕获 QProcess (ls) 到 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24812055/