Qt:QMouseEvent-如何获取小部件

Qt:QMouseEvent-如何获取小部件,qt,Qt,我在程序中使用QMouseEvent和QKeyEvents。我以编程方式制作各种小部件QDockWidgets和QCustomplot 我想使用一个单击和按键处理函数。然而,我正在努力获取实际被点击的小部件,以便我可以在该小部件中执行某些操作 有没有办法从ClickEvent返回被单击的小部件的名称?您可以在主窗口中实现eventFilter,并在主窗口中侦听来自小部件的事件: bool MainWindow::eventFilter(QObject * obj, QEvent * event)

我在程序中使用QMouseEvent和QKeyEvents。我以编程方式制作各种小部件QDockWidgets和QCustomplot

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

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

您可以在主窗口中实现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);

因为这些事件被传递到特定的对象,所以您已经知道哪个小部件正在接收它们。否则我真的不明白你想解决什么问题。