QPlainTextEditに基づいて次の機能を実装しようとしています。デフォルトでは、「ここに何かを入力してください」というメッセージが表示されます。クリックすると、消えて編集できるようになります。
そのためには、ウィジェットがクリックされたかどうかをインターセプトする必要があります。QPlainTextEditをサブクラス化せずにこれを行うことはできますか?
親のウィジェットonMousePressEventは、イベントが属する子のウィジェットを取得できますか?
QPlainTextEditをサブクラス化せずにこれを行うことはできますか?
はい、イベントフィルターを実装できます。
http://qt-project.org/doc/qt-4.8/eventsandfilters.html#event-filters
基本的に、プレーンテキスト編集用のマウスイベントを除外できます。フィルタでマウスプレスイベントが発生するたびに、プレーンテキスト編集の内容をクリアできます。
親のウィジェットonMousePressEventは、イベントが属する子のウィジェットを取得できますか?
イベントフィルタリングなしではありません。Qtのイベント伝播システムは、最初に子ウィジェットにイベントを送信し、次に子ウィジェットがイベントを受け入れない場合にのみ親ウィジェットにイベントを送信します。