为什么我的Qt eventFilter没有选择鼠标事件?

时间:2016-01-03 17:44:55

标签: c++ qt qtreewidget qt-events

我基本上有这个代码来拦截某些QTreeWidget事件。

MyWidget :: MyWidget ()
{
     m_tree = new QTreeWidget ();
     // ...
     m_tree -> installEventFilter (this);
}

bool MyWidget :: eventFilter (QObject * obj, QEvent * e)
{
    if (m_tree != obj)
        return QWidget :: eventFilter (obj, e);

    qDebug () << e -> type ();

    switch (e -> type ())
    {
        case QEvent :: MouseButtonPress:
        case QEvent :: MouseButtonRelease:
        case QEvent :: MouseMove:
        case QEvent :: Leave:
            qDebug () << "GOT EM";
            break;
    };

    // ...
 }

当我在QTreeWidget中单击并移动时,事件处理程序会为许多事件打印出e->type(),但不打印鼠标事件。鼠标事件似乎永远不会发生(Leave除外)。

为什么会这样?如果至少有一个按钮关闭,即使关闭鼠标,我也应该进行移动事件,无论如何,我应该按下并发布事件。 QTreeWidget本身表现正常,就像没有安装事件处理程序一样。

0 个答案:

没有答案