2016-10-14 6 views
1

私は大きなカスタムテキストエリアウィジェットと多くの他のテキスト入力ウィジェットを持つツールを書いています。私は現在コピー/貼り付けを私のツールを使用して、グローバルレベルでこれを行う方法に固執しました。つまり、必要なすべてのウィジェットにローカルにコピー/ペーストを実装したくありません。 Qt標準ウィジェットでは、Ctrl + C/Ctrl + Vでコピー/ペーストするだけで動作しますが、私はカスタムウィジェットを手動で実装する必要があります。PyQt:カスタムウィジェット用のグローバルコピー/ペーストアクション

メニューバーのコピー/ペーストアクションはどうですか?私は自分のプログラムに存在するすべてのウィジェットにそれらを接続する必要がありますか、これを行うための方法がいくつかありますか?ウィジェットにフォーカスを自動的に通知するグローバルコピー/ペーストハンドラにメニューアクションを接続するだけでよいのであれば、私は好きです。

+1

なぜコピー/貼り付けを再実装する必要がありますか?確かにあなたのカスタムウィジェットは、Qtテキスト入力ウィジェットのサブクラスに過ぎません。 – ekhumoro

+0

残念ながら、パフォーマンス上の理由から私のウィジェットは拡張されたQAbstractScrollAreaです。非常に大きなデータ量を表示できるように内容を自分で表示します。このコンポーネントは、私が知る限り、コピー/ペーストをサポートしていません。 – UglyBob

答えて

0

一般的なコピー/ペースト機能はありません。カスタムウィジェットでは、すべてを自分で実装する必要があります。 QClipboardクラスは、システムクリップボードへのアクセスを提供します。すべてのアプリケーションには、単一のクリップボードオブジェクトがあり、QApplication.clipboard()またはqApp.clipboard()でアクセスできます。

標準のQt入力ウィジェットはすべて、メニューアクション、ツールバーボタン、キーボードショートカットなどに接続できる独自のcopy()スロットとpaste()スロットを定義します。したがって、カスタムウィジェットはおそらく同じインターフェースを定義する必要があります。

あり、集中信号処理のための機能を提供できるようQActionGroupQButtonGroup、及びQSignalMapperとしてのクラスがありますが、明示的に、1対1の接続に固執することが多いはるかに簡単です。

関連する問題