gpt4 book ai didi

c++ - Qt MouseMove 事件未在 eventFilter() 中被捕获

转载 作者:太空宇宙 更新时间:2023-11-03 10:27:27 25 4
gpt4 key购买 nike

它根本不起作用。我启用了鼠标跟踪,然后安装了事件过滤器,一切正常,除了 MouseMove 事件。有什么帮助吗?

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
setMouseTracking(true);
installEventFilter(this);
}

MainWindow::~MainWindow()
{
delete ui;
}

bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
if(event->type() == QEvent::MouseMove)
{
QMouseEvent *mEvent = (QMouseEvent*)event;
qDebug() << mEvent->pos();
}
return false;
}

最佳答案

这一行比较奇怪,你让this过滤自己

installEventFilter(this);

如果 Qt 真的忽略自过滤事件,我不会感到惊讶

试试这个来检测中央小部件中的鼠标移动事件:

centralWidget()->installEventFilter(this);
centralWidget()->setMouseTracking(true);

或者,为了检测 MainWidget 中的鼠标移动事件,在 this 上使用 setMouseTracking(true) 并且不添加事件过滤器,而是重新实现 mouseMoveEvent( ) protected 函数:

//In constructor:
setMouseTracking(true);

void MainWindow::mouseMoveEvent(QMouseEvent * event)
{
//do stuff here

event->reject(); //To avoid messing QMainWindow mouse behavior
}

关于c++ - Qt MouseMove 事件未在 eventFilter() 中被捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28746541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com