QCoreApplication* a = QApplication::instance();
if (a)
a->installEventFilter(this);
在application中注册事件过滤
然后重载
bool eventFilter(QObject* watched, QEvent *event)
在eventFilter函数中:
bool YourWindowOrDialog::eventFilter(QObject* watched, QEvent *event)
{
if (event->type() == QEvent::MouseButtonPress) {
QRect rect = rect();
QMouseEvent* e = dynamic_cast<QMouseEvent*>(event);
QPoint pos = mapFromGlobale->globalPos());
if (e && !rect.contains(pos)) {
close();
}
}
return QWidget::eventFilter(watched, event);
}