2014-11-03 171 views
0

我需要從Qt調用Matlab函數。我知道有通過Engine做到這一點的標準方法,但我無法連接.lib庫(我認爲是因爲我使用了Mingw編譯器)。所以,據我所知QProcess是唯一的方法來做到這一點。我已經學習了一些示例並編寫了簡單的程序,其中有一個QLineEdit(用於Matlab腳本)和兩個QPushButton(用於將腳本發送到Matlab並讀取響應)。這裏是代碼:使用QProcess從Qt調用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

試試這個

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);