使用QProcess从Qt调用matlab函数

时间:2014-11-03 20:44:38

标签: matlab qt qprocess

我需要从Matlab调用Qt函数。我知道有标准的方法可以通过Engine来实现,但是我无法连接.lib库(我想因为我使用的是Mingw编译器)。所以,据我所知QProcess是唯一的方法。我研究了一些例子,编写了一个简单的程序,它有一个QLineEdit(用于Matlab脚本)和两个QPushButton(用于发送脚本到Matlab和读取响应)。这是代码:

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
   {
        ui->setupUi(this);
        proc = new QProcess(this);
        proc->start("\"C:\\Program Files\\MATLAB\\R2013b\\bin\\matlab.exe\"");

    }

   MainWindow::~MainWindow()
   {
       delete ui;
   }

  void MainWindow::on_readButton_clicked()
  {
       QByteArray dataError = proc->readAllStandardError();
       qDebug()<<dataError;
       QByteArray dataOutput = proc->readAllStandardOutput();
       qDebug()<<dataOutput;
  }

       void MainWindow::on_writeButton_clicked()
  {
       QString text = ui->textForMatlab->text();
       QByteArray script;
       script.append(text);
       qDebug()<<script;
       proc->write(script);
   }

当我启动该程序时,matlab.exe正在启动。但是当我在QLineEdit中输入内容并单击“写入”按钮时,matlab没有响应。你能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:0)

试试这个

  QString program = "C:/Program Files/MATLAB/R2013b/bin/matlab";
    QStringList arguments;
    arguments << "yourarg" << "youragr2";// if u have any aruguments then pass here

    QProcess *myProcess = new QProcess(this);
    myProcess->start(program, arguments);

如果无效,请尝试使用myProcess->startDetached(program,argumets);