拦截子窗口小部件(qt)上的mousePressEvent

时间:2012-10-05 22:55:40

标签: qt qtgui

我正在尝试基于QPlainTextEdit实现以下功能 - 默认情况下,它应显示“请输入此处的内容”消息,点击后,它将消失并允许编辑。

为此,我需要拦截是否已单击窗口小部件。我可以不对QPlainTextEdit进行子类化吗?

父母的小部件onMousePressEvent可以获取该事件所属的子小部件吗?

1 个答案:

答案 0 :(得分:1)

  

我可以不对QPlainTextEdit进行子类化吗?

是的,您可以实现事件过滤器:

http://qt-project.org/doc/qt-4.8/eventsandfilters.html#event-filters

基本上,您可以过滤掉用于纯文本编辑的鼠标事件。每当您的过滤器遇到鼠标按下事件时,您都可以清除纯文本编辑的内容。

  

父母的小部件onMousePressEvent可以获取哪个子小部件   该事件属于?

不是没有事件过滤。 Qt的事件传播系统首先向子窗口小部件发送事件,如果子窗口小部件不接受事件,则仅向父窗口小部件发送事件。