gpt4 book ai didi

c++ - 将键盘事件透明地传递给 QProcess 的推荐方法是什么?

转载 作者:行者123 更新时间:2023-11-28 03:59:00 24 4
gpt4 key购买 nike

我有一个 GUI 应用程序,它在内部创建一个 QProcess,捕获它的输出并将它显示在一个表单上。我需要以某种方式从表单中捕获关键事件以将它们传递给 QProcess(使其尽可能接近真实的终端窗口)。

所以,我想,我应该处理 keyReleaseEvent() 并以某种方式转换 event.text()(即 QString)或event.key()(即int)为参数,适用于process.write()(取char*QByteArray)。是否有一些推荐的方法来进行这种转换(考虑到本地化问题、ctrl/alt/shift 修饰符等)?我真的不想构建某种从 key() 返回值到 char* 字符串的映射;和 text() 删除修饰符。

此外,如果我在 QProcess 中使用命令 bash -c sudo something 启动进程,它会立即退出,并提示“没有 tty 存在并且没有指定 askpass 程序”,所以我可能正在做一些完全错了……

最佳答案

问题不仅仅是决定将什么写入进程。

您不能仅通过读/写进程的标准输出/标准输入来模拟终端,它比这更复杂。例如,考虑程序 less 或任何寻呼机。它如何知道一次打印多少行?它需要有关未通过 stdin/stdout/stderr 表示的终端的信息。

模拟终端超出了 QProcess 的范围。如果您确实确定需要这样做,那么可以使用一些现有的基于 Qt 的终端仿真器作为起点(例如 Konsole)。

关于c++ - 将键盘事件透明地传递给 QProcess 的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1851279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com