2014-06-16 30 views
1

我在我的程序中使用QMouseEventQKeyEvents。我以編程方式製作各種小部件(QDockWidgetsQCustomPlots)。Qt:QMouseEvent - 如何獲取小部件

我想使用單擊和按鍵處理函數。但是,我正在努力獲得實際被點擊的小部件,以便我可以在該小部件中執行某些操作。

有沒有辦法從ClickEvent返回被點擊的小部件的名稱?

+0

由於這些事件被傳遞給特定的對象,你已經知道什麼小部件正在接收它們。否則,我真的不明白你想要解決什麼問題。 –

回答

0

您可以在您的主窗口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; 
} 

也不要忘記安裝事件過濾器在主窗口構造你的widget:

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