在Qt中,我有一個QScrollArea,它有一些內容可以垂直滾動,但永遠不應該允許水平滾動。即使禁用H滾動條顯示,具有支持水平移動的滾輪(或觸摸板)的鼠標也會使其左右移動一點。完全禁用QScrollArea中的水平滾動,而不僅僅是酒吧
現在,這可能部分是一個佈局問題......但實際上沒有任何關閉屏幕。 這可能是一個警察,但是有沒有辦法只是從後面「鎖定」滾動區域能夠水平移動呢?
在Qt中,我有一個QScrollArea,它有一些內容可以垂直滾動,但永遠不應該允許水平滾動。即使禁用H滾動條顯示,具有支持水平移動的滾輪(或觸摸板)的鼠標也會使其左右移動一點。完全禁用QScrollArea中的水平滾動,而不僅僅是酒吧
現在,這可能部分是一個佈局問題......但實際上沒有任何關閉屏幕。 這可能是一個警察,但是有沒有辦法只是從後面「鎖定」滾動區域能夠水平移動呢?
爲了您QScrollArea
您需要eventFilter
方法或過載wheelEvent(QWheelEvent* event)
方法篩選QEvent::Wheel
。
另一種方式是創建窗口小部件從QWidget
繼承,只有超載eventFilter
及其過濾器適用於您的滾動區域:
scrollArea->viewport()->installEventFilter(someFilterWidget);
您是否嘗試設置滾動條策略?
myScrollArea-> setHorizontalScrollBarPolicy(Qt :: ScrollBarAlwaysOff);
http://qt-project.org/doc/qt-4.8/qabstractscrollarea.html#horizontalScrollBarPolicy-prop
scrollArea->verticalScrollBar()->setEnabled(false);
scrollArea->horizontalScrollBar()->setEnabled(false);
哇,這個工作很好!比重寫事件簡單得多。通過此方法禁用垂直滾動條甚至允許鼠標滾輪移動水平滾動條。 – Johndt6
是的,我已經在這樣做。所做的就是隱藏滾動條。但是你仍然可以用鼠標滾動。 –