2017-03-10 1 views
0

i'amをボタンを押すか、戻り値。 (すべてのボタンは、押されたイベント、多くのボタンの後にダイアログを終了しました)。この方法:任意のヒントが参考になりますQDialog:必要がQDialogウィジェットから押されたボタンを取得する簡単な方法を探して

MyDialog *ptrMyDialog = new MyDialog; 
ptrMyDialog->exec(); // blocked til finished 
// ??? 
QAbstractButton * btn = ptrMyDialog->Function_I_Need(); 
// or. I only need a spezific return value, set by button. e.g 
auto retValIneed= ptrMyDialog->exec(); 

よろしくラース

+2

http://stackoverflow.com/questions/12470806/qdialog-exec-and-getting-result-value –

答えて

1

QDialog exec()がすでにダイアログがacceptedrejectedあったかどうかを返します。これらの2つの区別が十分でない場合は、既にカスタムクラスがあるので、簡単にそのような動作を実装できます。

任意のボタンには、既に、ダイアログを閉じ関数のいずれかを呼び出して、あなたはクラスのメンバーの中に押すと、あなたが望む方法を使用してその値を取得したものだけで店をすることができます。

異なる可能性が、その中に基本クラスの実装を呼び出し、直接以前のように押されたものをボタンに格納カスタムメンバーを返し、exec()をオーバーロードすることです。あなたはMyDialogのボタンを取り扱う際setResult(int r)メソッドを呼び出す必要があります

+1

こんにちはと感謝。私はexec()メソッドをオーバーロードします。それは今働いている。 – larsDD

0

、その後、結果()はあなたに応じた値(そしておそらくものexec())を得ます。これがどのように行われるかについては、あなたは、実際のボタンのIDを返しますがのexec()以来、QMessageBox実装をチェックすることができます。

+0

こんにちは、ありがとう。私は成功せずにsetResult /結果のメカニズムを試してみました。どのように私はボタンハンドルのダイアログを閉じる必要があります。私はsetResult/closeを試した。 setResult/finished; setResult/done。ボタンのIDがsetResultに渡される*のみ* QMessageBoxで状態0&1 – larsDD

+1

にあるようだ、参照[qmessagebox.cpp:1356](https://code.woboq.org/qt5/qtbase/src/widgets/dialogs/ qmessagebox.cpp.html)、あなたはおそらく何か似たようなことをするべきです。 –

関連する問題