2016-11-27 37 views
0

我試圖一次運行兩個QWidget::mousePressEvent()處理程序。我有兩個小部件,A和B. B從QLabel繼承,A從QWidget繼承。我已經超載了QWidget::mousePressEvent()他們兩個。來自B的小部件正在獲取光標位置QPoint,它正在工作。 一個小部件從B類獲取這些信息,但不幸的是,只有當我點擊小部件B以外的其他地方(藍色區域)。 那麼,如果我點擊窗口小部件B的棕色空間,我應該怎麼做才能從窗口小部件A運行QWidget::mousePressEvent()QWidget :: mousePressEvent()同時在兩個小部件上

enter image description here

回答

1

event->ignore(),因爲A是B的背後則大概是A是B的父(也許不是直接的,但只要事情,因爲它是樹倒認爲沒有),所以,如果在年底B::mousePressEvent() you event->ignore()然後事件將繼續向下傳播,並且還會觸發A的mousePressEvent() ...最終,如果沒有其他消息沿路徑消耗事件。

此外,由於mousePressEvent()只是簡單地調用一些功能,所以您也可以從B的A的事件處理程序手動執行此操作,只需要引用它即可,實現起來很簡單。如果相關,您可能必須將座標映射到父項。

+0

event-> ignore()正是我所需要的!非常感謝! (: – Tatarinho

相關問題