0

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

为此,我需要拦截小部件是否已被单击。我可以在没有子类 QPlainTextEdit 的情况下这样做吗?

父widget onMousePressEvent 能否获取事件属于哪个子widget?

4

1 回答 1

1

我可以在没有子类 QPlainTextEdit 的情况下这样做吗?

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

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

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

父widget onMousePressEvent 能否获取事件属于哪个子widget?

并非没有事件过滤。Qt 的事件传播系统首先将事件发送到子窗口小部件,然后如果子窗口小部件不接受事件,则仅发送给父窗口小部件。

于 2012-10-06T00:12:55.517 回答