qpython运行不了代码_尝试使用QProcess运行python控制台时无法获得输出

我写了一个非常简约的程序,可以达到你的预期.以下是代码:

mainwindow.hpp

#ifndef MAINWINDOW_HPP

#define MAINWINDOW_HPP

#include

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow(QWidget *parent = 0);

private slots:

void onReadyRead();

void onPushButtonClicked();

private:

QPushButton* pushButton;

QProcess *shell;

};

#endif // MAINWINDOW_HPP

main.cpp中

#include

#include

#include

#include "mainwindow.hpp"

MainWindow::MainWindow(QWidget* parent)

: QMainWindow(parent)

{

pushButton = new QPushButton("Execute");

connect(pushButton, SIGNAL(clicked()),

this, SLOT(onPushButtonClicked()));

setCentralWidget(pushButton);

}

void MainWindow::onPushButtonClicked()

{

shell = new QProcess(this);

connect(shell, SIGNAL(readyRead()), this, SLOT(onReadyRead()));

shell->start("python");

if (!shell->waitForStarted())

exit(1);

shell->write("print 'hello!'\n");

shell->closeWriteChannel();

if (!shell->waitForFinished())

exit(1);

qDebug() << "Shell error code:" << shell->error();

}

void MainWindow::onReadyRead()

{

QString text = shell->readAll();

qDebug() << text;

}

int main(int argc, char* argv[])

{

QApplication app(argc, argv);

MainWindow win;

win.show();

return app.exec();

}

实施说明:

>我通过添加QProces :: waitFor …()来使用同步API.

>我用QProcess :: closeWriteChannel()关闭了通信通道.

>我添加了一些调试输出,尤其是QProcess的错误代码非常有用.

这些事情共同展示了一个激励人心的问候!当按下按钮时.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值