【发布时间】:2012-10-05 22:55:39
【问题描述】:
我正在尝试基于 QPlainTextEdit 实现以下功能 - 默认情况下,它应该显示“请在此处输入内容”消息,单击时它会消失并允许编辑。
为此,我需要拦截小部件是否已被点击。我可以在没有子类 QPlainTextEdit 的情况下这样做吗?
父母的widget onMousePressEvent能否获取到该事件属于哪个孩子的widget?
【问题讨论】:
我正在尝试基于 QPlainTextEdit 实现以下功能 - 默认情况下,它应该显示“请在此处输入内容”消息,单击时它会消失并允许编辑。
为此,我需要拦截小部件是否已被点击。我可以在没有子类 QPlainTextEdit 的情况下这样做吗?
父母的widget onMousePressEvent能否获取到该事件属于哪个孩子的widget?
【问题讨论】:
我可以在没有子类 QPlainTextEdit 的情况下这样做吗?
是的,你可以实现一个事件过滤器:
http://qt-project.org/doc/qt-4.8/eventsandfilters.html#event-filters
本质上,您可以过滤掉用于纯文本编辑的鼠标事件。每当您的过滤器遇到鼠标按下事件时,您都可以清除纯文本编辑的内容。
父母的widget onMousePressEvent能否获取到哪个孩子的widget 该事件属于?
并非没有事件过滤。 Qt 的事件传播系统首先将事件发送给子小部件,如果子小部件不接受事件,则仅发送给父小部件。
【讨论】: