向QPlainTextEdit发送虚假的回车键按下事件

0 投票
3 回答
1204 浏览
提问于 2025-04-16 10:54

我正在为我的基于QPlainTextEdit的小部件编写一些单元测试,所以我需要给它发送一些假按键。

我可以成功发送普通的a-z字母按键,但当我尝试发送换行符时,我的keyPressEvent处理函数却没有收到这个按键。

在下面的代码中,第一个sendEvent工作得很好,但第二个却不行。问题可能出在哪里呢?

for char in "import django":
    global_objects.app.sendEvent(editor, QtGui.QKeyEvent(QtCore.QEvent.KeyPress, ord(char), QtCore.Qt.NoModifier, char))
global_objects.app.sendEvent(editor, QtGui.QKeyEvent(QtCore.QEvent.KeyPress, QtCore.Qt.Key_Return, QtCore.Qt.NoModifier))

谢谢,
安德鲁

3 个回答

0

把单词 "Return" 放进 QKeyEvent 构造函数的文本 参数里应该就能解决问题。请检查一下这行代码是否对你有用:

QtCore.QCoreApplication.sendEvent(self.editor, 
                                  QtGui.QKeyEvent(QtCore.QEvent.KeyPress, QtCore.Qt.Key_Return, QtCore.Qt.NoModifier, 'Return'))        

希望这能帮到你,祝好

0

这样做

global_objects.app.sendEvent(editor,
    QtGui.QKeyEvent(QtCore.QEvent.KeyPress, QtCore.Qt.Key_Return,
    QtCore.Qt.NoModifier, '\n'))

可以吗?(注意这里多了一个参数给QtGui.QKeyEvent。)

0

这个问题是因为我在代码的其他地方对事件进行了过滤。哎呀。

撰写回答