我需要从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没有响应。你能告诉我我做错了吗?
答案 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);