Qt:QMouseEvent - 如何获取小部件

时间:2014-06-16 16:46:35

标签: qt

我在我的程序中使用QMouseEventQKeyEvents。我以编程方式制作各种小部件(QDockWidgetsQCustomPlots)。

我想使用单击和按键处理函数。但是,我正在努力获取实际被点击的小部件,以便我可以在该小部件中执行某些操作。

有没有办法从ClickEvent返回点击的小部件名称?

1 个答案:

答案 0 :(得分:0)

您可以在mainWindow中实现eventFilter并监听来自小部件的事件:

bool MainWindow::eventFilter(QObject * obj, QEvent * event)
{

    if((myWidget *)obj == widget1 && event->type()==QEvent::KeyPress) 
    {

        int pressedKey = ((QKeyEvent*)event)->key();

        ...

    }
    else if((myWidget *)obj == widget2 && event->type()==QEvent::MouseButtonRelease)
    {

        if(((QMouseEvent*)event)->button() == Qt::LeftButton)
        {
            ...
        }
    }

    return false;
}

另外,不要忘记在mainWindow构造函数中为小部件安装事件过滤器:

widget1->installEventFilter(this);
widget2->installEventFilter(this);