QT - 事件过滤

#include <QApplication>

#include <QMainWindow>

#include <QEvent>

#include <QDebug>

class MainWindow : public QMainWindow {

// ...

};

class ModalEventFilter : public QObject {

bool eventFilter(QObject *watched, QEvent *event) override {

if (event->type() == QEvent::MouseMove || event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease) {

// 如果弹窗打开,则过滤掉鼠标事件

if (isModal) {

return true; // 过滤掉事件

}

}

return QObject::eventFilter(watched, event);

}

void setModal(bool modal) {

isModal = modal;

}

private:

bool isModal = false;

};

int main(int argc, char *argv[]) {

QApplication a(argc, argv);

MainWindow w;

ModalEventFilter eventFilter;

w.installEventFilter(&eventFilter); // 为主窗口安装事件过滤器

// 弹窗打开时

eventFilter.setModal(true);

// 弹窗关闭时

// eventFilter.setModal(false);

w.show();

return a.exec();

}

相关推荐
赵民勇1 小时前
rcc (Qt Resource Compiler) 详细指南
qt
Lhan.zzZ2 小时前
Qt绘制残留问题排查与修复日志
开发语言·数据库·qt
YxVoyager2 小时前
Qt C++ :QJson使用详解
c++·qt
赵民勇3 小时前
Qt项目缺少Quick模块错误解决方案
linux·qt
枫叶丹43 小时前
【Qt开发】Qt系统(三)->事件过滤器
java·c语言·开发语言·数据库·c++·qt
艾莉丝努力练剑4 小时前
【QT】初识QT:背景介绍
java·运维·数据库·人工智能·qt·安全·gui
m0_5027249518 小时前
QT - 系统托盘
开发语言·qt
深蓝海拓20 小时前
PySide6之QListWidget 学习
笔记·python·qt·学习·pyqt
Morwit20 小时前
Qt CMake 项目中 QML 和资源文件的引入方式
开发语言·c++·qt
追烽少年x1 天前
Qt面试题合集(五)
qt