我有一个 GUI 应用程序,它创建一个QProcess内部,捕获它的输出并将其显示在一个表单上。我需要以某种方式从表单中捕获关键事件以将它们传递给QProcess(以使其尽可能接近真实的终端窗口)。
所以,我想,我应该处理keyReleaseEvent()并以某种方式将event.text()(which is QString) 或event.key()(which is int) 转换为适用于process.write()(which take char*or QByteArray) 的参数。是否有一些推荐的方法来进行这种转换(考虑到本地化问题、ctrl/alt/shift 修饰符等)?我真的不想构建某种从key()返回值到char*字符串的映射;并text()掉落修饰符。
此外,如果我bash -c sudo something在 QProcess 中使用命令启动进程,它会立即退出,并抱怨“没有 tty 存在并且没有指定 askpass 程序”,所以我可能做错了什么......