要防止QAbstractScrollArea 或 QTableView 水平滚动,您可以使用以下方法:
horizontalScrollBar()
函数,以隐藏水平滚动条。horizontalHeader()
函数,隐藏或显示水平滚动条。setSectionResizeMode()
函数,将水平滚动条设置为 QHeaderView::NoResize,以禁止调整表列大小。下面是一个示例代码:
from PyQt5.QtWidgets import QAbstractScrollArea
class MyScrollArea(QAbstractScrollArea):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def horizontalScrollBar(self):
return self.parentWidget().horizontalScrollBar()
def horizontalScrollBarPolicy(self):
return Qt.ScrollBarAlwaysOff
class MyTableView(QTableView):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def horizontalHeader(self):
return self.parentWidget().horizontalHeader()
def setSectionResizeMode(self, mode):
super().setSectionResizeMode(mode)
self.parentWidget().horizontalScrollBar().setSingleStep(1)
def resizeEvent(self, event):
super().resizeEvent(event)
self.parentWidget().horizontalScrollBar().update()
# ...
my_table_view = MyTableView(parent)
my_table_view.horizontalHeader().setSectionResizeMode(QHeaderView.NoResize)
在这个示例中,我们创建了一个名为 MyScrollArea 的自定义 QAbstractScrollArea,它将继承自 Qt 的 QAbstractScrollArea。我们重写了 horizontalScrollBar()
函数,以隐藏水平滚动条。然后,我们创建了一个名为 MyTableView 的自定义 QTableView,它继承自 Qt 的 QTableView。我们重写了 horizontalHeader()
函数,以隐藏水平滚动条。最后,我们在 resizeEvent()
函数中添加了自定义的滚动条更新逻辑。
注意:这个示例仅适用于 Qt 框架。如果您使用其他框架,可能需要根据该框架的相应部分进行更改。
领取专属 10元无门槛券
手把手带您无忧上云