qt鼠标点击事件如何不向父窗口传递
时间: 2023-07-13 14:20:41 浏览: 275
点击子元素事件不触发父元素事件
4星 · 用户满意度95%
在Qt中,可以通过重写QWidget的eventFilter()函数来实现鼠标点击事件不向父窗口传递。具体步骤如下:
1.在需要屏蔽鼠标点击事件的控件的父窗口中,重写eventFilter()函数。
2.在eventFilter()函数中,判断接收到的事件是否为鼠标点击事件,如果是则返回true,表示该事件已经被处理,不需要向父窗口传递。
示例代码如下:
```cpp
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::MouseButtonPress) {
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
if (mouseEvent->button() == Qt::LeftButton) {
// 如果是鼠标左键点击事件,则不向父窗口传递
return true;
}
}
// 其他事件交给父类处理
return QMainWindow::eventFilter(obj, event);
}
```
在需要屏蔽鼠标点击事件的控件上,安装该父窗口的eventFilter()函数即可:
```cpp
ui->pushButton->installEventFilter(this);
```
这样,当鼠标左键点击该按钮时,该事件不会向父窗口传递。
阅读全文