[英]QLineEdit not updating text with QKeyEvent
我正在嘗試實現虛擬鍵盤小部件。 我能想到的最簡單的方法是創建QKeyEvent實例並將它們與QApplication.postEvent()一起發送到焦點小部件。
首先,我正在嘗試更新我擁有的固定QLineEdit,因此代碼為:
self.pushButton_A.clicked.connect(self.virtualKeyPress)
[...]
def virtualKeyPress(self):
self.keyPress = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier)
QApplication.postEvent(self.lineEdit, self.keyPress)
但是QLineEdit實例不會更新GUI中的文本!
線索? 干杯謝謝!
決議:(對HeyYO的稱贊 )
self.pushButton_A.clicked.connect(self.virtualKeyPress)
[...]
def virtualKeyPress(self):
self.keyPress = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier, 'A')
QApplication.postEvent(self.lineEdit, self.keyPress)
在我的情況下,在Qt.Key_A的位置我將該參數設置為0,以便我可以將所有按鈕連接到virtualKeyPress方法。 我還必須將所有按鈕的焦點策略設置為“無焦點”(直接在Qt Designer中完成)。 最終的代碼如下:
def virtualKeyPress(self):
self.keyPressed = QString(self.sender().text())
self.keyPress = QKeyEvent(QEvent.KeyPress, 0, Qt.NoModifier, self.keyPressed)
self.focusWidget = QApplication.focusWidget()
QApplication.postEvent(self.focusWidget, self.keyPress)
您是否嘗試過指定text參數;
self.keyPress = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier, "A")
它在Qt5和C ++中對我有用,所以我認為它也適合你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.