首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >信号QscrollArea

信号QscrollArea
EN

Stack Overflow用户
提问于 2020-06-28 00:09:00
回答 1查看 342关注 0票数 0

我想知道是否有可能有一个信号或什么东西知道什么时候卷轴是可用的,什么时候它不再可用,每次窗口被调整大小?

代码语言:javascript
运行
复制
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class Widget(QWidget):
    def __init__(self, parent= None):
        super(Widget, self).__init__()

        widget = QWidget()

        layout = QVBoxLayout(self)

        for _ in range(10):
            btn = QPushButton()
            layout.addWidget(btn)

        widget.setLayout(layout)

        scroll = QScrollArea()
        scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        scroll.setWidget(widget)
        vLayout = QVBoxLayout(self)
        vLayout.addWidget(scroll)
        self.setLayout(vLayout)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    dialog = Widget()
    dialog.show()
    app.exec_()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-28 00:25:15

由于QScrollBar通常只有在其范围最大值大于0时才可见,因此您只需检查该值。

代码语言:javascript
运行
复制
class Widget(QWidget):
    def __init__(self, parent= None):
        # ....
        # note that the scroll area is now an instance member
        self.scroll = QScrollArea()
        self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.scroll.setWidget(widget)
        self.scroll.verticalScrollBar().rangeChanged.connect(self.checkScrollBarRange)
        vLayout = QVBoxLayout(self)
        vLayout.addWidget(self.scroll)
        self.setLayout(vLayout)

        # the next is important when resizing the widget containing the scroll area
        self.scroll.installEventFilter(self)

    def eventFilter(self, source, event):
        if source == self.scroll and event.type() == QEvent.Resize:
            self.checkScrollBarRange()
        return super().eventFilter(source, event)

    def checkScrollBarRange(self):
        if (self.scroll.verticalScrollBarPolicy() != Qt.ScrollBarAlwaysOff and
            self.scroll.verticalScrollBar().maximum()):
                print('vertical scroll bar IS visible')
        else:
            print('vertical scroll bar NOT visible')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62616816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档