捕获QProcess (ls)到列表视图

Capture QProcess (ls) to listview

本文关键字:列表 视图 ls QProcess 捕获      更新时间:2023-10-16

我需要为一个过程向用户提供一系列已挂载的驱动器。下面的片段将显示驱动器挂载所在目录的内容。我如何解析出sd??值(sda1,sdb1等)从QString"命令",并提供给用户选择?列表框吗?如何建议。

   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,只需要使用QtAndroidExtras平台特定的API。

对于listview问题,使用以下QML:
ListView {
    ...
    model: myStringListProprety
    // or: model: myClass.myStringListAccessor()
}
所以,基本上你要么创建一个属性(这是我的建议),要么在c++中创建一个slot/可调用的方法。如果您已经使用了QStorageInfo,那么您已经准备好了,因为目标属性已经存在于那里。同样,它可能需要Android特定的后端调整,但这种对类的摆弄也会使其他人受益!