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