在Qt中,我有一个QScrollArea,其中有一些内容可以垂直滚动,但永远不应该允许水平滚动。即使我禁用显示的H滚动条,带有支持水平运动的滚轮(或触摸板)的鼠标也会使它稍微左右移动。
现在,这可能部分是布局问题......但实际上屏幕上没有任何内容。 它可能是一个警察,但有没有办法从后面“锁定”滚动区域能够水平移动?
答案 0 :(得分:5)
scrollArea->verticalScrollBar()->setEnabled(false);
scrollArea->horizontalScrollBar()->setEnabled(false);
答案 1 :(得分:4)
对于QScrollArea
,您需要使用QEvent::Wheel
方法或重载eventFilter
方法过滤wheelEvent(QWheelEvent* event)
。
其他方式是创建仅从QWidget
继承的小部件,仅重载eventFilter
并将其过滤器应用于滚动区域:
scrollArea->viewport()->installEventFilter(someFilterWidget);
答案 2 :(得分:0)
您是否尝试设置滚动条策略?
myScrollArea-> setHorizontalScrollBarPolicy(QT :: ScrollBarAlwaysOff);
http://qt-project.org/doc/qt-4.8/qabstractscrollarea.html#horizontalScrollBarPolicy-prop