完全禁用QScrollArea中的水平滚动,而不仅仅是条形

时间:2012-10-18 14:05:11

标签: c++ qt user-interface scroll

在Qt中,我有一个QScrollArea,其中有一些内容可以垂直滚动,但永远不应该允许水平滚动。即使我禁用显示的H滚动条,带有支持水平运动的滚轮(或触摸板)的鼠标也会使它稍微左右移动。

现在,这可能部分是布局问题......但实际上屏幕上没有任何内容。 它可能是一个警察,但有没有办法从后面“锁定”滚动区域能够水平移动?

3 个答案:

答案 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-> setHorizo​​ntalScrollBarPolicy(QT :: ScrollBarAlwaysOff);

http://qt-project.org/doc/qt-4.8/qabstractscrollarea.html#horizontalScrollBarPolicy-prop