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

Ada*_*ile 3 c++ user-interface qt scroll

在Qt中,我有一个QScrollArea,其中包含一些可以垂直滚动的内容,但是绝对不允许水平滚动。即使我禁用了H滚动条,具有滚轮(或触摸板)支持水平运动的鼠标也会使其左右移动一点。

现在,这可能部分是布局问题...但是实际上没有任何东西在屏幕上。这可能是一个解决方案,但是有没有办法从后面“锁定”滚动区域,使其完全可以水平移动呢?

小智 6

scrollArea->verticalScrollBar()->setEnabled(false);
scrollArea->horizontalScrollBar()->setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

  • @winteralfs,由于这个问题标有C++标签,因此代码是C++的。但是这个箭头'->'相当于一个点'.'。在Python中。self.scrollArea.horizo​​ntalScrollBar().setEnabled(False) (2认同)

fas*_*ked 4

对于您来说QScrollArea,您需要方法或重载方法QEvent::Wheel中的过滤器。eventFilterwheelEvent(QWheelEvent* event)

另一种方法是创建仅继承QWidget自重载的小部件eventFilter并将其过滤器应用于滚动区域:

scrollArea->viewport()->installEventFilter(someFilterWidget);
Run Code Online (Sandbox Code Playgroud)