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)
一起使用。但看看这个答案: