Qt的交互式命令行界面



我希望为Qt中的应用程序创建一个跨平台的readline/linenoise类型的命令行接口。如果可能的话,我宁愿不重新发明轮子。用户操作的终端应该能够通过命令提示符接收命令。这将在Qt中完成,因此我的问题是:是否有一种Qt式的方式通过信号和插槽来实现这一点,从而当用户将线路输入终端时,可以调用插槽?

我知道这可以很简单地使用QThread并运行一个阻塞进程来在被读取的行上发出信号。这个问题专门针对使用内置的Qt功能。

在试图找出一个可行的答案时,我意识到我的问题措辞不当。我在寻找一个可以被称为Terminal Emulator的东西。有几种现有的解决方案,包括QTermWidget。然而,似乎还不存在用于Qt的非基于UI的终端模拟器。也就是说,为了使用这些,必须具有Qt的活动UI实例,而不仅仅是使用Qt命令行应用程序。

按照使用简单的Qt命令行的路线,它并不像连接QTextStream之类的东西并观察命令行的输出那么简单。与大多数命令行程序一样,为了评估箭头键之类的东西,必须进行本机的低级别处理。不幸的是,QKeyPressEvent和类似事件需要运行UI。

最新更新