android - 捕获 QProcess (ls) 到 ListView

标签 android c++ qt qprocess qtsystems

我需要为用户提供一系列已安装的驱动器以进行程序。下面的 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/

相关文章:

android - 实例变量在保留的 Fragment 中变为 null

c++ - QSqlQuery size() 总是返回 -1

c++ - 在 C/C++ 中从文件中读取最后 n 行

ruby - Ruby/QT 的库错误

java - 使所有按钮在 5 秒内不可点击

java - RxAndroid : Class must either be declared abstract or implement abstract method error

windows - QFile::copy 返回真,即使在 Windows 中复制失败

c++ - 如何每秒调用一个更新qt小部件的函数

android - Android神秘的空指针异常

c++ - 如何在 C(或 C++)应用程序中接收和解码 SNMP 陷阱?