#include "widget.h" #include <QPushButton> Widget::Widget(QWidget *parent) : QWidget(parent) { _button = new QPushButton("this button", this); connect(_button, SIGNAL(clicked()), this, SLOT(close())); /*button 給本身安裝了一個消息過濾器,那麼通過button的消息,都要調用它的消息過濾器函數*/ _button->installEventFilter(this); } #include <QMouseEvent> bool Widget::eventFilter(QObject *watched, QEvent *event) { if(watched == _button){ if(event->type() == QEvent::MouseButtonRelease){ return true; } } return QWidget::eventFilter(watched, event); }