【发布时间】:2012-10-18 14:05:11
【问题描述】:
在 Qt 中,我有一个 QScrollArea,其中包含一些可以垂直滚动的内容,但绝不应该允许水平滚动。即使我禁用了 H 滚动条的显示,具有支持水平运动的滚轮(或触摸板)的鼠标也会使其左右移动一点。
现在,这可能部分是布局问题...但实际上屏幕上没有任何内容。 这可能是一种逃避,但有没有办法从后面“锁定”滚动区域,完全可以水平移动?
【问题讨论】:
标签: c++ qt user-interface scroll
在 Qt 中,我有一个 QScrollArea,其中包含一些可以垂直滚动的内容,但绝不应该允许水平滚动。即使我禁用了 H 滚动条的显示,具有支持水平运动的滚轮(或触摸板)的鼠标也会使其左右移动一点。
现在,这可能部分是布局问题...但实际上屏幕上没有任何内容。 这可能是一种逃避,但有没有办法从后面“锁定”滚动区域,完全可以水平移动?
【问题讨论】:
标签: c++ qt user-interface scroll
scrollArea->verticalScrollBar()->setEnabled(false);
scrollArea->horizontalScrollBar()->setEnabled(false);
【讨论】:
对于您的QScrollArea,您需要在eventFilter 方法中过滤QEvent::Wheel 或重载wheelEvent(QWheelEvent* event) 方法。
另一种方法是创建从QWidget 继承的小部件,仅重载eventFilter,并将其过滤器应用于您的滚动区域:
scrollArea->viewport()->installEventFilter(someFilterWidget);
【讨论】:
您是否尝试设置滚动条策略?
myScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
http://qt-project.org/doc/qt-4.8/qabstractscrollarea.html#horizontalScrollBarPolicy-prop
【讨论】: