2016-01-19 86 views
0

我有多個QGraphicsItemsItemIsSelectable,ItemIsMovableItemSendsGeometryChanges標誌。已禁用QGraphicsItem防止滾動的QGraphicsView

有時候我想禁用這些項目的選擇和運動,我目前通過調用QGraphicsItem.setEnabled(False)這樣做。然而,當光標位於的禁用QGraphicsItem頂部,滾輪已經不滾動視圖。我試圖通過谷歌尋找解決方案,但我還沒有找到任何工作解決方案。

所以,我的問題是:有沒有一種簡單的方法*不*讓禁用物品,如果將光標懸停在他們防止滾動?

如果沒有,我可以只寫一個自己的函數,禁止提到的標誌,而不是對QGraphicsItem調用setEnabled(),但我仍然不知道爲什麼滾動不工作,如果我真的不能讓禁用的項目忽略滾動事件。

我已經嘗試過的一件事是禁用Qt.MiddleButton調用​​,但這似乎沒有改變任何東西。

我的設置:Windows 7中的Python 2.7.3和PyQt4的

+0

你也許能夠適應這個問題的答案:http://stackoverflow.com/q/34476962/1994235 –

回答

1

void QGraphicsItem::setEnabled(bool enabled)

禁用的項目是可見的,但他們不接受
鼠標事件被丟棄

任何事件

這就是您的鼠標事件 - 滾輪 - 無法正常工作的原因。
爲什麼試圖改變鼠標按鈕的名稱不會有所作爲 - 該項目根本不:-)

如果要禁用QGraphicsItem的移動與選擇照顧,最好的辦法就是取消設置他們QGraphicsItem::ItemIsSelectableQGraphicsItem::ItemIsMovable標誌。

這似乎真的簡單......正如你可能已經注意到了。

的選擇 - 作爲鏈接的答案顯示 - 是安裝一個場景事件過濾器,有其他項目篩選禁用的項目活動。下面的問題有好消息:

Event filter on QGraphicsItem

+0

是的,你重置這些標誌是什麼,我決定做到底。 – user2746752