2012-10-18 36 views
3

在Qt中,我有一個QScrollArea,它有一些內容可以垂直滾動,但永遠不應該允許水平滾動。即使禁用H滾動條顯示,具有支持水平移動的滾輪(或觸摸板)的鼠標也會使其左右移動一點。完全禁用QScrollArea中的水平滾動,而不僅僅是酒吧

現在,這可能部分是一個佈局問題......但實際上沒有任何關閉屏幕。 這可能是一個警察,但是有沒有辦法只是從後面「鎖定」滾動區域能夠水平移動呢?

回答

4

爲了您QScrollArea您需要eventFilter方法或過載wheelEvent(QWheelEvent* event)方法篩選QEvent::Wheel

另一種方式是創建窗口小部件從QWidget繼承,只有超載eventFilter及其過濾器適用於您的滾動區域:

scrollArea->viewport()->installEventFilter(someFilterWidget); 
2
scrollArea->verticalScrollBar()->setEnabled(false); 
scrollArea->horizontalScrollBar()->setEnabled(false); 
+0

哇,這個工作很好!比重寫事件簡單得多。通過此方法禁用垂直滾動條甚至允許鼠標滾輪移動水平滾動條。 – Johndt6