2016-05-26 10 views
2

opencvプログラムを開発しました。入力からいくつかのフォルダパスを取るので、qtでGUIを作成することにしました。 GUIはシンプルですが、基本的にはボタンです。 問題は、ボタンから別の文字列に文字列を渡すことができないことです。opencvプログラム用のqtでguiを構築する

std::string MainWindow::on_pushButton_3_clicked() 
{ 
    QString salvataggi=QFileDialog::getExistingDirectory(
       this, 
       tr("Open File"), 
       "/home/" 
       ); 
    salvat= salvataggi.toStdString(); 
    return salvat; 
} 

私はポインタを使用しようとしましたが、何も再発しませんでした。

std::string MainWindow::on_pushButton_3_clicked() 
{ 
    QString salvataggi=QFileDialog::getExistingDirectory(
       this, 
       tr("Open File"), 
       "/home/" 
       ); 
    savee= &salvat; 
    *savee = salvataggi.toStdString(); 
    return savee; 
} 

私はどこが間違っているのか分かりますか? ありがとう

+0

行き過ぎと思われます。コマンドライン引数(OpenCV 3は素晴らしいCommandLineParserを持っています)を使用するか、[this](http://stackoverflow.com/a/35266625/5008845)のようなものを使用してください。 – Miki

答えて

1

このメソッドはコールバックであり、voidを返す必要があります。メインループから呼び出され、Qtエンジンによって処理されます。コールバックの復帰は気にしません。

あなたは自分のMainWindowクラスのいくつかのメンバ変数を追加し、コールバックメソッドからいくつかの文字列を格納する場合:

class MainWindow : public QMainWindow 
{ 
    // ... 
    std::string my_string; 
    //... 
}; 

をそしてそれをあなたのコールバックから必要な値を与えます。

あなただけのウィンドウを終了し、ユーザーからこの情報が必要な場合:その後、​​とは、メイン・ウィンドウオブジェクトから文字列を取得:プログラムにフォルダを渡すためのQtを使用し

int main(int argc, char *argv[]) 
{ 
    Application a(argc, argv); 
    MainWindow win; 
    win.show(); 
    a.exec(); 
    /* do what you want with win.my_string */ 
    //... 
} 
関連する問題