Qt QWebEngineView,在视图中发布关键事件
我有自己的“虚拟键盘”。我已经将单击的按钮转换为KeyEvents,并将其传递给QTextEdit等等。我现在的问题是,我想对QWebEngineView中的可写区域执行同样的操作。 例如,我使用键盘编辑QLineEdit,并请求一个网站完成 比如说我请求谷歌。现在,谷歌网站就在我面前。我需要将KeyEvents从键盘发送到它的搜索框(QWebEngineView中的框) 现在让我们指出几点:Qt QWebEngineView,在视图中发布关键事件,qt,pyqt,qevent,qkeyevent,Qt,Pyqt,Qevent,Qkeyevent,我有自己的“虚拟键盘”。我已经将单击的按钮转换为KeyEvents,并将其传递给QTextEdit等等。我现在的问题是,我想对QWebEngineView中的可写区域执行同样的操作。 例如,我使用键盘编辑QLineEdit,并请求一个网站完成 比如说我请求谷歌。现在,谷歌网站就在我面前。我需要将KeyEvents从键盘发送到它的搜索框(QWebEngineView中的框) 现在让我们指出几点: 我正在使用PyQt5 正如我所读到的,API告诉我它的父级应该将KeyEvent消费到正确的位置。 这
def key_released(self):
event = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier,
"a", False)
# web_view is my QWebEngineView... but it won't consume. Or maybe it's not consuming to the right place.
self.web_view.keyPressEvent(event)
当您将事件发送到QWebEngineViews focusProxy时,应该可以这样做-类似这样的方式应该可以:
recipient = self.web_view.focusProxy()
QApplication.postEvent(recipient, event)
Mannnnn,如果我有一百万美元,我现在就给你!天哪,你不知道我为了弄明白这件事伤了多少脑筋。尝试了一些疯狂的事情,而不是像那样简单的事情!!!做得很好!我只是不得不为这个“QCoreApplication.postEvent”更改这行“self.web\u view.keyPressEvent(event)”(self._receiver,event)”。通过按键事件,我无法访问受保护的方法。因此,我必须通过QCoreApplication.postEvent进行发布,正如我之前所做的和您所说的那样。:D
recipient = self.web_view.focusProxy()
QApplication.postEvent(recipient, event)