Мне нужно вызвать функцию 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 не отвечает. Не могли бы вы сказать мне, что я делаю не так?