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