簡體   English   中英

QLineEdit不使用QKeyEvent更新文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM