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

C++ 如何为控制台输入(stdin)获取类似QIODevice的信号?,c++,qt,C++,Qt,我正在编写基于QCoreApplication的控制台应用程序,我想在用户向stdin输入内容时获得信号(一次输入整行内容或按字符输入,这对我的应用程序并不重要) QFile根据文档,它不会发出信号,所以如果用户在stdin中输入了一些东西,那么如何获得信号呢 现在我正在使用Qt4.8.7/linux/amd64,但我希望将来将此代码移植到macosx和windows 更新 我找到了在基于*nix的OS上运行的解决方案,比如linux和macosx: 但是windows呢,它是否也会使用qSo

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

QFile
根据文档,它不会发出信号,所以如果用户在
stdin
中输入了一些东西,那么如何获得信号呢

现在我正在使用Qt4.8.7/linux/amd64,但我希望将来将此代码移植到macosx和windows

更新

我找到了在基于*nix的
OS
上运行的解决方案,比如
linux
macosx

但是windows呢,它是否也会使用
qSocketNotifier

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


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

您的程序在等待用户输入时还做了什么?有什么吗?@JohnZwinck它通过套接字与不同的服务进行通信,所以我想要基于信号/插槽的
异步
解决方案,因为它比多线程代码更容易支持。根据这一点:在Windows上,您不能将
QSocketNotifier
fileno(stdin)
一起使用。但看看这个答案: