过滤鼠标点击在Qt内的一个类



我希望能够启用和禁用过滤鼠标点击在我的整个QMainWindow按下一个按钮或一个键,这将导致过滤开始。我想在类QMainWindow中启用事件过滤器。

我希望能够在我的类中有一个事件过滤器,我们可以调用MyWindow,从我发现我应该创建一个新的类MouseFilter,重新定义eventFilter(QObject* object,QEvent* event)并将其安装在我的窗口

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    MyWindow w;
    w.installEventFilter(new MouseFilter());
    w.show();
    return a.exec();
}

是否有一种方法,我可以实现从我的对象内部的事件过滤器?


解决方案我想我可能把事情弄得太复杂了。它和创建mousePressEvent的子类一样简单。
void MouseFilter::mousePressEvent(QMouseEvent * event){
    if(event->button() == Qt::RightButton){
        qDebug() << "Right-o";
    }
}

我认为你正在寻找的是mousePressEvent,你可以在MyWindow

中覆盖它

欢呼,Rostislav .

事件过滤器用于在事件传递到另一个对象时对其进行过滤。事件处理程序允许您实现事件处理逻辑。事件过滤器也是一个事件处理程序,但它的工作方式是拦截绑定到其他对象的事件,并决定是否以及如何传递到目的地。

你想做的听起来像你只是想实现一个事件处理程序。所以不需要事件过滤器。

当你想要阻止或翻译事件,或者改变某些对象的行为,而这些对象的事件处理你不能或不想覆盖时,事件过滤器是很有用的。

最新更新