2016-04-13 11 views
2

を消える:はQMessageBoxが、私は次のようなラムダ関数にその<code>show</code>関数を呼び出して<code>QMessageBox</code>を表示しようとしている

connect(ui->graphButton, &QAbstractButton::clicked, [](void){ 
     QMessageBox message; 
     message.setText(tr("Graphing button clicked")); 
     message.show(); 
}); 

しかし、graphButtonをクリックすると、QMessageBoxウィンドウが消える前に一瞬だけ表示されます。これをどうすれば解決できますか?

+1

'あなたがわから – user463035818

+0

ない範囲を離れるとQMessageBox'が破壊されたが、私はQMessageBox'が親オブジェクトへのポインタを取るコンストラクタを持っているし、あなたがそれを動的に作成する必要があります'期待: 'メッセージを=新しいですQMessageBox(これ); 'メッセージボックスは、親デストラクターが呼び出されたときにのみ破棄されます(前に閉じていない場合) – user463035818

+0

@ tobi303私はそれが疑わしいので、通常の関数やスロットを使用する方が簡単だと思います。 – benardier

答えて

3
message.exec(); 

実行する。

全コード:

connect(ui->graphButton, &QAbstractButton::clicked, [](void){ 
     QMessageBox message; 
     message.setText(tr("Graphing button clicked")); 
     message.exec(); 
}); 

showのみウィジェットの表示状態を設定します。http://doc.qt.io/qt-4.8/qwidget.html#showhttp://doc.qt.io/qt-4.8/qwidget.html#visible-prop ですのでexecが望ましい行動http://doc.qt.io/qt-5/qmessagebox.html#exec

を有しているあなたは、showを使用する必要はありませんデフォルトの可視性。それを再び有効にするためにウィジェットの可視性を無効にしたときに使用します。

+0

なぜ-1?私は試して、それは動作します。 – Boiethios

+0

私は 'message.exec()'を呼び出すべきではないので-1だと思います。 – IAmInPLS

+0

彼はデバッグメッセージを表示したいだけです。したがって、メッセージボックスを実行する必要があります。私はQt Creatorを試しました。メッセージを表示し、OKをクリックすると終了します。それは望ましい行動ではありませんか? – Boiethios

-1

QMessageBox.setModalを使用して、メッセージボックスを「モーダル」モードに設定します(つまり、動作が完了するまで実行をブロックします)。次に、「開く」メソッドを使用してメッセージボックスを表示します。

connect(ui->graphButton, &QAbstractButton::clicked, [](void){ 
    QMessageBox message; 
    message.setText(tr("Graphing button clicked")); 
    message.setModal(true); 
    message.open(...); 
}); 
+0

setModal(true)は実行をブロックしません(ユーザー入力のために他のウィンドウを無効にするだけです)。open()も実行されないので、メッセージボックスはopen()の直後でも破棄されます。目に見えることはありません。それを動作させるには、exec()を使うか、heap上でmessageboxを作成するか、それをクラスメンバーにして、それが作成されたブロックを生き残らなければなりません。 –

+0

それはモダリティに関するものですが、ダイアログのモダリティは、実行はブロックされます。あなたのコードを試してください(私がやった) - ダイアログがすぐに破棄され、スタック上に作成されるため、動作しません。 –

+0

うん、私の間違いはそこにある。コードをテストせず、その動作がC#/ Delphiと同じであると仮定しました。 –

関連する問題

 関連する問題