Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行c++;从Qt内部输入二进制文件,并将二进制文件的输出重定向到Qt应用程序上的文本框 我想从QT应用程序中生成一个C++二进制文件。这怎么可能?在Java中,我有类似于Runtime.exec()的东西。你能告诉我这在Qt框架中是如何实现的吗_C++_Qt - Fatal编程技术网

运行c++;从Qt内部输入二进制文件,并将二进制文件的输出重定向到Qt应用程序上的文本框 我想从QT应用程序中生成一个C++二进制文件。这怎么可能?在Java中,我有类似于Runtime.exec()的东西。你能告诉我这在Qt框架中是如何实现的吗

运行c++;从Qt内部输入二进制文件,并将二进制文件的输出重定向到Qt应用程序上的文本框 我想从QT应用程序中生成一个C++二进制文件。这怎么可能?在Java中,我有类似于Runtime.exec()的东西。你能告诉我这在Qt框架中是如何实现的吗,c++,qt,C++,Qt,此外,当我的二进制文件运行时,我希望该程序的输出(现在写入控制台)被写入Qt中的文本框。如果控制台上的数据是以字符串形式写入的,那么我可以轻松地执行textbox.setText()。所以基本上,问题是如何获得程序应该写入控制台的数据,而实际上它是从Qt框架内部运行的 我知道我可以通过简单地在QT里面运行和编译我的代码来解决以上两个问题,但是我问,因为我正处于严重的时间紧张和一些设计上的问题。如果这个原因不能让你的船浮起来,请将这个问题视为家庭作业问题并帮助我:)看看QProcess及其方法,尤

此外,当我的二进制文件运行时,我希望该程序的输出(现在写入控制台)被写入Qt中的文本框。如果控制台上的数据是以字符串形式写入的,那么我可以轻松地执行textbox.setText()。所以基本上,问题是如何获得程序应该写入控制台的数据,而实际上它是从Qt框架内部运行的


我知道我可以通过简单地在QT里面运行和编译我的代码来解决以上两个问题,但是我问,因为我正处于严重的时间紧张和一些设计上的问题。如果这个原因不能让你的船浮起来,请将这个问题视为家庭作业问题并帮助我:)

看看QProcess及其方法,尤其是readAllStandardOutput()

QProcess是你的朋友

一些调用Windows命令解释器并同步等待其输出以获得简单目录列表的代码的最小版本类似于,如下所示:

QProcess process;
process.start("cmd.exe",
              QStringList() << "/c" << "dir" << "/b",
              QIODevice::ReadWrite | QIODevice::Text);
if(!process.waitForFinished()) // beware the timeout default parameter
    qDebug() << "executing program failed with exit code" << process.exitCode();
else
    qDebug() << QString(process.readAllStandardOutput()).split('\n');
可能在按下按钮的处理程序中调用以下内容:

process->start("some_command", QStringList() << "some" << "args",
               QIODevice::ReadWrite | QIODevice::Text);
if(!process->waitForStarted())
    // some_command failed to even start
process->start(“some_command”,在onstdutavable()槽中的QStringList()readallstandardpoutput(),并以某种方式对其进行解析以确定进度。最后评估连接的finished()信号的exitCode和exitStatus参数,以确定是否一切正常(TM)”


如果您希望能够在未经其同意的情况下停止/杀死进程和所有潜在的子进程,并跨平台执行此操作,这将开始变得有趣……但这显然超出了您的问题范围。

谢谢。因为我在Linux上,我将不得不尝试使用
/bin/bash
代替
cmd.exe
。我将尝试一下!谢谢。啊,Linux…(在我的第一个答案中,我怎么会犯这个错误并给人留下我是Windows操作系统的印象?;)。请注意,
dir
不是Windows上的程序,而是一个shell命令,因此我必须执行
cmd.exe
并要求它执行
dir
。在Linux上,您可以直接执行
ls
程序,如
process.start(“/bin/ls”)
。还请注意,对于仅Linux代码,正确的'\n'行结尾不需要QIODevice::Text OpenMode标志。
process->start("some_command", QStringList() << "some" << "args",
               QIODevice::ReadWrite | QIODevice::Text);
if(!process->waitForStarted())
    // some_command failed to even start