6

QMessageBox::addButton() メソッドによって追加された QMessageBox に 3 つのボタンがあります。ボタンがクリックされた場合にメッセージ ボックスを閉じないようにすることは可能ですか? デフォルトでは、すべてのボタンがウィンドウを閉じますが、1 つのボタンに対してはやりたくありません。

編集:なぜこれは反対票を投じられたのですか?

4

4 に答える 4

3

ウィジェットへのポインタを取得できる場合は、をフィルタリングするQMessageBoxをインストールしてみることができます。QObject::eventFilterQEvent::Close

于 2012-09-01T22:34:07.530 に答える
3

同じ問題がありましたが、チェックボックスを追加したかったのですが、ButtonRole設定してもクリックするとダイアログが閉じ続けましたQMessageBox::ActionRole(他の人も試しました)。このシナリオでは、 を呼び出しblockSignals(true)たところQCheckBox、ダイアログを閉じずにチェック/チェック解除の動作が可能になりました。幸いQCheckBoxなことに、信号がなくても問題なく動作しますが、ボタンからの信号が必要であると仮定します。

単純なカスタマイズ用のクラスを派生させるのは面倒なので、ダイアログを閉じない新しいロールを追加する必要があります。

于 2012-09-12T21:47:30.690 に答える
1

関数のオーバーロードを調べましたaddButton()が、このメソッドで追加するボタンのカスタム動作はありません。メッセージボックスの標準ボタンと同じように動作します。

ただし、完全にカスタマイズ可能なダイアログを作成したい場合は、QDialogクラスを拡張して好きなコントロールを使用するのが最善の方法です。

于 2012-09-01T23:25:12.543 に答える