Qt:QMouseEvent 没有从 QGLWidget 传播出去

Posted

技术标签:

【中文标题】Qt:QMouseEvent 没有从 QGLWidget 传播出去【英文标题】:Qt: QMouseEvent not propagating out of QGLWidget 【发布时间】:2015-01-29 01:47:24 【问题描述】:

QGLWidget 是否可以传播其鼠标事件?

我目前有一个 QGlWidget 作为我的主窗口的子窗口,但我似乎无法处理在它的框架上发生的鼠标事件。

也许我犯了一个根本性的缺陷,但是 qglwidet 本身中的鼠标事件被设置为 event->accept(),而且我也没有阻止来自 qglwidget 的传出信号。

我有一个解决方法,我只是从 qglwidget 中的每个鼠标事件中发出新信号,并将它们连接到我的主窗口中,但我只是好奇这是否是一个已知问题,我做错了,或者根本不可能。

【问题讨论】:

【参考方案1】:

来自关于接受事件的 Qt 文档:

设置accept参数表示事件接收者想要 事件。不需要的事件可能会传播到父窗口小部件。

因此,当您在小部件上接受鼠标事件时,它不会传播到主窗口。您可以在QGlWidget 中处理该事件,但不必设置接受标志。只需将其传播给父级即可。

【讨论】:

即使我没有将事件设置为接受,但事件仍然不会传播

以上是关于Qt:QMouseEvent 没有从 QGLWidget 传播出去的主要内容,如果未能解决你的问题,请参考以下文章

Qt学习: QPaintEvent和QMouseEvent的简单程序示例

事件(QEvent*)与 mousePressEvent(QMouseEvent *)冲突?

尝试使用 QMouseEvent

QMouseEvent鼠标事件

QT之鼠标事件

QT_无边框窗口拖动缩放