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

标签 c++ qt

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

QFile 根据文档不发出信号,所以如果用户向 stdin 中输入一些内容,有什么想法如何获取信号?

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

更新

我找到了适用于基于 *nix 的 OS 的解决方案,例如 linuxmac 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/

相关文章:

c++ - QT 中的 QSlider 在新的 MacOS Monterey (v12.0.1) 中行为异常。任何解决方法?

c++ - 如何使用没有名称的 C++ 类?

c++ - 使用 Weverything 和 C++11 时出现与 clang 冲突的警告

c++ - std::vector<unsigned char> 在使用 std::ifstream 读取二进制文件后保持为空

python - Qt:让所有 child 都在 parent 的区域内

c++ - 如何强制 QGLWidget 更新屏幕?

c++ - 为 Windows Mobile 5 编译 Qt 应用程序

c++ - 在 C++ 中使用多重继承时 ESP 无效 (VS2005)

c++ - Qt中应该使用哪种内存管理方式?

python - 如何使用QFileSystemModel过滤多个目录并显示在QTreeView上?