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

时间:2016-04-26 09:45:25

标签: c++ qt

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

QFile根据文档不会发出信号,所以如果用户放入stdin的内容,任何想法如何获取信号?

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

更新

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

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

但是对于Windows来说,它与QSocketNotfier一样吗?

1 个答案:

答案 0 :(得分:1)

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

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