首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何防止QAbstractScrollArea / QTableView水平滚动?

要防止QAbstractScrollArea 或 QTableView 水平滚动,您可以使用以下方法:

  1. 重写 QAbstractScrollArea 类的 horizontalScrollBar() 函数,以隐藏水平滚动条。
  2. 使用 QTableView 的 horizontalHeader() 函数,隐藏或显示水平滚动条。
  3. 使用 QTableView 的 setSectionResizeMode() 函数,将水平滚动条设置为 QHeaderView::NoResize,以禁止调整表列大小。

下面是一个示例代码:

代码语言:python
代码运行次数:0
复制
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 框架。如果您使用其他框架,可能需要根据该框架的相应部分进行更改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券