首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QLineEdit没有用QKeyEvent更新文本

QLineEdit没有用QKeyEvent更新文本
EN

Stack Overflow用户
提问于 2015-11-12 16:35:23
回答 1查看 666关注 0票数 2

我正在尝试实现一个虚拟键盘部件。我能想到的最简单的方法是创建QKeyEvent实例,并将它们与QApplication.postEvent()一起发送到焦点小部件。

首先,我试图更新一个固定的QLineEdit,所以代码如下:

代码语言:javascript
复制
   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中更新它的文本!

线索?干杯,谢谢!

RESOLVED: (荣誉到HeyYO)

代码语言:javascript
复制
   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设计器中直接这样做)。最后的代码如下:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-12 16:45:46

您是否尝试指定文本参数;

代码语言:javascript
复制
self.keyPress = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier, "A")

它对我有效,在Qt5&C++中,所以我假设它也适用于您。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33676589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档