如何调用需要QtGui输入stdin的应用程序?
我正在使用Ubuntu和QtCreator4 我有一个可执行形式的.cpp程序(比如说如何调用需要QtGui输入stdin的应用程序?,qt,executable,qprocess,Qt,Executable,Qprocess,我正在使用Ubuntu和QtCreator4 我有一个可执行形式的.cpp程序(比如说abc.out),我希望在按下按钮时运行该程序。它包含许多cin和cout,所以我希望它在“终端”(Ubuntu)上运行,这样我就能够向它输入和输出值。我该怎么做 我试过system()和 也, qprocessp1; p1.启动(./abc.输出) 使用QProcess,我的可执行文件会运行,但会在第一个cout处停止。它在Qt Creator的应用程序输出屏幕上运行,而不是在终端上运行 例如: 我在应用程序
abc.out
),我希望在按下按钮时运行该程序。它包含许多cin和cout,所以我希望它在“终端”(Ubuntu)上运行,这样我就能够向它输入和输出值。我该怎么做
我试过system()和
也,
qprocessp1;
p1.启动(./abc.输出)强>
使用QProcess,我的可执行文件会运行,但会在第一个cout处停止。它在Qt Creator的应用程序输出屏幕上运行,而不是在终端上运行
例如:
我在应用程序输出上看到:
输入名称:
当我在这里键入值并按enter键时,它不接受该值,而是移动到下一行,允许我进一步键入。
我想在终端上运行这个
abc.out
文件。任何想法都会非常有用。你是说Qt Creator 2.4吗?在任何情况下,您都应该在“项目”选项卡上找到“运行设置”部分,并从中找到“在终端中运行”复选框。您还可以使用自定义的可执行文件选项并在那里键入:gnome terminal--command./abc.out
确切的细节可能会有所不同,因为我使用的是Qt Creator 2.5
这在从Qt Creator启动时应该可以工作,但当您在IDE之外使用应用程序时,您需要从终端启动它,而不是双击可执行文件。要解决这个问题,我可以想出两种方法:
QProcess::execute(“gnome terminal--command./abc.out”);
),尽管问题是不同的系统具有不同的终端名称myqprocess.write(输入由\u QtGui从\u user\u请求);
)。在这里,您可能需要知道事先向用户询问哪些信息。如果要显示已启动进程的cout输出,可以使用read
方法和QProcess之友根据您的问题,我假设您正在编写一个应用程序,该应用程序使用QProcess启动其他应用程序。这很好,但是如果您的子流程正在等待来自标准输入的数据,那么它将永远等待,因为您没有提供任何数据。父应用程序的stdin无法自动引导到子进程。假设您正在从主应用程序启动两个进程。输入应转到哪个子进程
如果要与子进程通信,必须使用QProcess的QIODevice方法,并从该应用程序发送/读取数据。唯一合理的解决方案是在终端中启动目标应用程序。您自己的代码是提供终端窗口还是重用现有终端应用程序取决于您。我不确定是否理解您的问题。。您是否正在尝试编写使用QProcess启动其他应用程序的应用程序?在这种情况下,您必须明确地处理如何将用户输入发送到您的子应用程序。void main window::在按钮上单击(){QProcess p1;p1.execute(“./obj.out”)}这是我的代码。obj.out有许多cin和cout。如何处理?第一个cout出现在creator的应用程序输出窗口中。我想如果我能从obj.out中获取std::cin和std::cout,使其出现在gcc中这样的终端上,这个问题就会解决away@user1484717-这就是我在回答中试图解决的问题。我用一些实现提示修改了它。谢谢。我启动了一个终端窗口,并且能够管理它