PyQt 中的事件、剪贴板与拖放操作详解
1. 事件处理机制
在 PyQt 里,当一个事件传递给某个小部件时,首先会调用该小部件的 event() 方法。这个方法若成功处理事件则返回 True ,反之返回 False 。若返回 False ,PyQt 会把事件传递给小部件的父级,接着传递给父级的父级,直至有处理程序返回 True ,或者到达顶级(没有父级),此时该事件将被丢弃。
event() 方法既可以自行处理事件,也能够将任务委托给特定的事件处理程序,像 paintEvent() 或者 mousePressEvent() 这类。
当用户按下 Tab 键时,在绝大多数情况下,拥有键盘焦点的小部件的 event() 方法会调用 setFocus() 来切换到按 Tab 顺序的下一个小部件,并且返回 True ,而不会将该事件传递给任何按键处理程序。不过, QTextEdit 类会重新实现事件处理程序,以便在文本中插入实际的制表符,但也可以让它恢复到正常的焦点切换行为。
由于按键事件不会传递给按键处理程序,所以我们无法通过重新实现按键事件处理程序来阻止 Tab 键改变键盘焦点。因此,我们需要重新实现 eve
超级会员免费看
订阅专栏 解锁全文
6

被折叠的 条评论
为什么被折叠?



