私が構築しているアプリでは、通常のショートカット キー Ctrl-Z および Ctrl-Shift-Z を介してアクセスできるグローバルな元に戻す/やり直しシステムを実装しました。
また、独自の取り消し/やり直し機能を持つ QLineEdit フィールドも使用しています。editFinished イベントがトリガーされる (Enter キーが押されるか、フォーカスが失われる) たびに、グローバルな取り消しイベントが作成されます。ただし、数文字を入力してから Ctrl-Z を押すと、フィールドはキープレスをキャプチャし、独自の元に戻すシステムを使用して最後の編集を元に戻し、キープレスを渡しません。
私が実装したいのはこれです:
QLineEdit にフォーカスがあり、Ctrl-Z が押されているが、QLineEdit に元に戻す編集がない場合 (undoAvailable() が False の場合)、ウィジェットでキープレスを無視して親に渡すようにしたいと思います。
元に戻すが利用可能で、ウィジェットにフォーカスがある (IE がツールバーのボタンを押した) ときにユーザーがグローバルな元に戻す/やり直しアクションを呼び出した場合、それらをこのウィジェットに渡したいと思います。
何か案は?