如何获取类似 QIODevice 的控制台输入信号 (stdin)

How to get QIODevice-like signals for console input (stdin)?

本文关键字:控制台 信号 stdin QIODevice 输入 何获取 获取      更新时间:2023-10-16

我正在编写基于QCoreApplication的控制台应用程序,当用户在 stdin 中输入某些内容时,我想获取信号(一次整行或按字符,这对我的应用程序来说并不重要)。

QFile根据文档不发出信号,所以如果用户放入要stdin的东西,如何获得信号的任何想法?

现在我正在使用qt 4.8.7/linux/amd64,但我希望将来将此代码移植到macosx和Windows上。

更新

我找到了应该适用于基于 *nix OS的解决方案,例如 linuxmac os x

https://gist.github.com/gjorquera/2576569

但是窗户呢,也会和QSocketNotfier一起吗?

对于Unix(Linux,OS X),这个答案有一个解决方案。

对于 Windows,您不能使用 QSocketNotifier :而是使用从GetStdHandle获取的控制台句柄上的QWinEventNotifier(请参阅此答案)。代码将与上面答案中的Unix变体几乎相同。