1
我可以通过从我的QT代码执行此操作来打开终端:QT可以打开一个Linux终端,然后写入它吗?
QProcess过程;
process.start(“xterm”); process.waitForFinished(-1);
但后来我想不出如何写命令给它?
我需要这样做,因为我希望我的应用程序能够SSH设备,然后在登录后编写命令并查看输出。
我也接受其他解决方案!
感谢
我可以通过从我的QT代码执行此操作来打开终端:QT可以打开一个Linux终端,然后写入它吗?
QProcess过程;
process.start(“xterm”); process.waitForFinished(-1);
但后来我想不出如何写命令给它?
我需要这样做,因为我希望我的应用程序能够SSH设备,然后在登录后编写命令并查看输出。
我也接受其他解决方案!
感谢
QProcess中有一个写命令,但你不希望被调用waitForFinished。
QProcess proc;
proc.start("xterm");
proc.waitForStarted();
proc.write(someData, dataSize);
如果想从终端响应,时隙连接到readyRead()信号
// Qt 5 syntax
connect(proc &QProcess::readyRead, this, &MyClass::readData());
然后调用的从READDATA槽函数的读取功能,如readAll()之一。
对不起,对于迟到的答案。 我试了你的建议,但我得到这个错误运行你的代码: QProcess:当进程仍在运行时销毁。 – user2992866
您需要动态分配进程(QProcess * proc = new QProcess),并在适当的时候删除它,也许通过链接到finished()信号并调用deleteLater()。我按照你的问题中的示例代码将它分配到堆栈上。 – TheDarkKnight
感谢它修复了这个错误。但是,例如proc-> write(“pwd”)不会写入终端。 – user2992866