我正在编写基于 QCoreApplication
的控制台应用程序,我想在用户向标准输入输入内容时获取信号(一次整行或按字符输入,这对我的应用程序并不重要) .
QFile
根据文档不发出信号,所以如果用户向 stdin
中输入一些内容,有什么想法如何获取信号?
目前我正在使用 qt 4.8.7/linux/amd64,但我希望将来将此代码移植到 macosx 和 windows。
更新
我找到了适用于基于 *nix 的 OS
的解决方案,例如 linux
和 mac os x
:
https://gist.github.com/gjorquera/2576569
但是对于 Windows 来说,它是否也可以使用 QSocketNotfier
?
最佳答案
对于 Unix(Linux、OS X),this answer有解决办法。
对于 Windows,您不能使用 QSocketNotifier
:相反,在您从 GetStdHandle
获得的控制台句柄上使用 QWinEventNotifier
(参见 this answer ).该代码与上述答案中的 Unix 变体几乎相同。
关于c++ - 如何为控制台输入 (stdin) 获取类似 QIODevice 的信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36861177/