0

QTextEdit にフォーカスがない場合、キーボード イベントをテキスト エディタにリダイレクトする方法は?

私のコードはここにあります http://qt-project.org/forums/viewthread/30245/

ご協力いただきありがとうございます !アプリケーション レベルで重要なイベントをインターセプトしたかったのですが、以前にもそのような場合にイベント フィルターを使用するように言われましたが、ここで eventFilter() 関数を実装するのが難しいので、いくつかのコードを示してもらえますか?事前に感謝します!

4

2 に答える 2

0

イベント フィルタを使用して、アプリケーションの別の部分からリダイレクトします。

Qt モディファイヤ キー リリースのキャッチ

アプリケーションがまったくフォーカスされていない場合は、キーボード フックなどを使用する必要があります。

それが役立つことを願っています。

于 2013-07-20T16:15:24.763 に答える
0

以下は、eventFilter をコードに実装する方法です。

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class BoxLayout(QWidget):
    def __init__(self, parent=None):
        super(BoxLayout, self).__init__(parent)
#        self.resize(100, 300)

        ok = QPushButton("OK")
        cancel = QPushButton("Cancel")
        self.textEdit = QTextEdit()
        vbox = QVBoxLayout()
        vbox.addWidget(self.textEdit)
        vbox.addWidget(ok)
        vbox.addWidget(cancel)
        self.setLayout(vbox)

        self.installEventFilter(self)





    def eventFilter(self, object_, event):
        if event.type() == QEvent.KeyRelease and self.focusWidget() != self.textEdit:
            self.textEdit.append(event.text())

        return False


app = QApplication(sys.argv)
qb = BoxLayout()
qb.show()
sys.exit(app.exec_())

他のウィジェットがキーを受け取らないようにしたい場合は、イベント Filter で True を返すだけです。

于 2013-07-25T12:35:18.063 に答える