当QTextEdit没有焦点时,如何将键盘事件重定向到文本编辑器?
我的代码在这里http://qt-project.org/forums/viewthread/30245/
谢谢你的帮助!我确实想在应用程序级别拦截任何关键事件,我之前也被告知在这种情况下使用事件过滤器,但我在这里很难实现eventFilter()函数,你能展示一些代码吗?提前感谢!
使用事件过滤器将其从应用程序的另一部分重定向。
捕捉Qt修改键释放
如果您的应用程序根本没有集中注意力,则需要使用键盘挂钩或类似的东西。
希望能有所帮助。
这就是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即可