QMessageBox::addButton() メソッドによって追加された QMessageBox に 3 つのボタンがあります。ボタンがクリックされた場合にメッセージ ボックスを閉じないようにすることは可能ですか? デフォルトでは、すべてのボタンがウィンドウを閉じますが、1 つのボタンに対してはやりたくありません。
編集:なぜこれは反対票を投じられたのですか?
ウィジェットへのポインタを取得できる場合は、をフィルタリングするQMessageBoxをインストールしてみることができます。QObject::eventFilterQEvent::Close
同じ問題がありましたが、チェックボックスを追加したかったのですが、ButtonRole設定してもクリックするとダイアログが閉じ続けましたQMessageBox::ActionRole(他の人も試しました)。このシナリオでは、 を呼び出しblockSignals(true)たところQCheckBox、ダイアログを閉じずにチェック/チェック解除の動作が可能になりました。幸いQCheckBoxなことに、信号がなくても問題なく動作しますが、ボタンからの信号が必要であると仮定します。
単純なカスタマイズ用のクラスを派生させるのは面倒なので、ダイアログを閉じない新しいロールを追加する必要があります。
関数のオーバーロードを調べましたaddButton()が、このメソッドで追加するボタンのカスタム動作はありません。メッセージボックスの標準ボタンと同じように動作します。
ただし、完全にカスタマイズ可能なダイアログを作成したい場合は、QDialogクラスを拡張して好きなコントロールを使用するのが最善の方法です。