【发布时间】:2016-09-15 18:15:33
【问题描述】:
我正在尝试使用 Qt 为简单的 C++ 实现 GUI,以了解它是如何工作的。 C++ 程序和 GUI 在 VS 2015 中的同一解决方案中位于不同的项目中。Qt 程序将使用 QProcess 的 start() 函数调用 C++ 程序。 C++ 控制台应用程序将在后台运行,Qt 程序将充当接口。我的问题是,如何使用 QProcess 将值传递给 C++ 程序以及如何从 C++ 程序中获取输出?这是我正在使用的示例程序:-
C++ 程序
#include<iostream>
#include<fstream>
using namespace std;
void main() {
int a;
cout << "Enter a number" << endl;
cin >> a;
cout << "The Square of the number is " << (a*a) << endl;
ofstream write;
write.open("test.txt");
write << (a * a);
write.close();
}
Qt 程序
#include "FrontEnd.h"
#include <QtWidgets/QApplication>
#include <qprocess.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
FrontEnd w;
w.show();
QProcess p1;
p1.start("Interface.exe");
p1.write("5",5);
return a.exec();
}
我尝试使用 write() 函数传递值,但它似乎不起作用,因为 test.txt 文件仍然为空。我编写的 Qt 程序缺少 GUI 功能,因为一旦我弄清楚如何使用 QProcess 发送和接收数据,我将添加它们。感谢您的帮助!
【问题讨论】:
-
很简单!一旦进程启动(等待它的
started()信号或QProcess::waitForStarted()),通过进程的write方法写入它的stdin。然后 C++ 进程通过其cin命令获取数据并返回结果(为简单起见,不要将结果写入文件,而是在stdout上返回),因此在Qt 应用程序中您可以读取stdout.