我在我的程序中使用QMouseEvent
和QKeyEvents
。我以编程方式制作各种小部件(QDockWidgets
和QCustomPlots
)。
我想使用单击和按键处理函数。但是,我正在努力获取实际被点击的小部件,以便我可以在该小部件中执行某些操作。
有没有办法从ClickEvent
返回点击的小部件名称?
答案 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);