Docker ClickHouse extjs6.5 typora 人工智能 unity3d delphi variant openssl swift2 swagger progressjs 后台模板下载 sql server 视频教程 list获取最后一个元素 jq解析json linux超级用户 oracle数据库版本 oracle限制查询条数 kafka消费不到数据 chrome发送post请求 string转16进制 mysql分区表优劣分析 oracle分析函数 python3入门 python解析json数据 python中open python创建数据库 python模块下载 filejava java介绍 java的数据结构 php实例 java小程序 雪地求生 EasyCHM 离散数学pdf lseek函数 选择模拟位置信息应用 winterboard
当前位置: 首页 > 学习教程  > 编程语言

Qt 鼠标过滤事件QEvent::MouseButtonRelease捕获不到问题

2020/12/28 18:48:39 文章标签:

最近遇到一种情况直接代码说明&#xff1a; bool MainWindow::eventFilter(QObject *obj, QEvent *event) {if (event->type() QEvent::MouseButtonRelease && obj ui->treeWidget){qDebug() << "sdsd";}return QWidget::eventFilter(obj, ev…

最近遇到一种情况直接代码说明:

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::MouseButtonRelease && obj == ui->treeWidget)
    {
        qDebug() << "sdsd";
    }
    return QWidget::eventFilter(obj, event);
}

如果之前已经为QTreeWidget已经安装过滤器,这一切操作是没问题的,但是就鼠标事件无法捕获其他的却可以。以下部分是我的猜测欢迎各位大佬批评指正:
QWidget本来是没有鼠标事件的,这些事件其实都是在QWidget上的viewport(虽然他也是个Widget),所以我们要捕获鼠标的点击事件需要为里面的viewport安装事件过滤器,而不是我们当前的QWidegt本身这样就可以捕获到了

 ui->treeWidget->viewport()->installEventFilter(this);
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::MouseButtonRelease && obj == ui->treeWidget->viewport())
    {
        qDebug() << "sdsd";
    }

    return QWidget::eventFilter(obj, event);
}

本文链接: http://www.dtmao.cc/news_show_550121.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?