首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未调用QTreeWidget MouseMove事件

未调用QTreeWidget MouseMove事件
EN

Stack Overflow用户
提问于 2020-10-25 20:44:15
回答 1查看 35关注 0票数 0

以下是代码

代码语言:javascript
运行
复制
#include <QTreeWidget>
#include <QEvent>

class CustomTreeWidget: public QTreeWidget
{
    Q_OBJECT
public:
    CustomTreeWidget(QWidget *parent = nullptr);

protected:
    bool eventFilter(QObject *target, QEvent *event) override;

private:
    Q_SLOT void OnItemEntered(QTreeWidgetItem *item, int column);
};
代码语言:javascript
运行
复制
CustomTreeWidget::CustomTreeWidget(QWidget *parent) :
    QTreeWidget(parent)
{
    this->installEventFilter(this);
    this->setMouseTracking(true);
    connect(this, &ImageFilterTreeWidget::itemEntered, this, &ImageFilterTreeWidget::OnItemEntered);
}

bool CustomTreeWidget::eventFilter(QObject *target, QEvent *event)
{
    if(event->type() == QEvent::MouseMove)
    {
       // This piece of code is never called            
    }

    return false;
}

void CustomTreeWidget::OnItemEntered(QTreeWidgetItem *item, int column)
{
    //setting some variables based on *item
}

我遗漏了什么?为什么MouseMove信号永远不会被捕获?应用程序没有任何其他微件,也没有其他功能

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-25 21:03:48

QTreeWidget继承了QAbstractScrollArea,因此您需要在关联的视窗中截获鼠标移动事件,而不是QTreeWidget本身……

代码语言:javascript
运行
复制
CustomTreeWidget::CustomTreeWidget (QWidget *parent)
  : QTreeWidget(parent)
{
    viewport()->setMouseTracking(true);
    viewport()->installEventFilter(this);
    connect(this, &ImageFilterTreeWidget::itemEntered, this, &ImageFilterTreeWidget::OnItemEntered);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64523816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档