美文网首页
Qt 之 QScrollArea

Qt 之 QScrollArea

作者: 水之心 | 来源:发表于2020-08-13 15:27 被阅读0次

1 QScrollArea 简介

QScrollArea类提供了另一个窗口小部件的滚动视图。scroll area 用于显示框架内子窗口小部件的内容。如果窗口小部件超出框架的大小,则视图可以提供滚动条,以便可以查看子窗口小部件的整个区域。子窗口小部件必须使用 setWidget() 指定。例如:

from xinet import QtWidgets, QtCore, QtGui
from xinet.run_qt import run


class ImageView(QtWidgets.QScrollArea):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 载入图片
        imageLabel = QtWidgets.QLabel(self)
        image = QtGui.QPixmap("test.jpg")
        imageLabel.setPixmap(image)
        # 设定滚动条组件
        self.setBackgroundRole(QtGui.QPalette.Dark)
        self.setWidget(imageLabel)
        # 初始化设定
        self.init_Ui()

    def init_Ui(self):
        # 修改窗口默认尺寸
        self.resize(500, 500)


if __name__ == '__main__':
    run(ImageView)

显示:

上面的代码创建了一个包含图像标签的滚动区域。缩放图像时,滚动区域可以提供必要的滚动条。

滚动条的外观取决于当前设置的scroll bar policies。您可以使用QAbstractScrollArea继承的功能来控制滚动条的外观。

例如,您可以设置horizontalScrollBarPolicyverticalScrollBarPolicy属性。或者,如果您希望在滚动区域的内容发生变化时动态调整滚动条,则可以使用horizontalScrollBar()verticalScrollBar()函数(使您能够访问滚动条),并在每次 使用setValue()函数更改滚动区域的内容。

您可以使用widget()函数检索子控件。可以使用setWidgetResizable()函数将视图调整大小。 可以使用setAlignment()指定窗口小部件的对齐方式。

有两个便捷函数ensureVisible()ensureWidgetVisible(),通过确保在需要时滚动内容,可以确保确保内容的特定区域在视口中可见。

使用滚动区域显示自定义窗口小部件的内容时,重要的是确保将子窗口小部件的size hint设置为合适的值。如果将标准QWidget用于子窗口小部件,则可能有必要调用setMinimumSize()以确保在滚动区域内正确显示窗口小部件的内容。

如果滚动区域用于显示包含布局中排列的子窗口小部件的窗口小部件的内容,则必须意识到布局的大小策略也将确定窗口小部件的大小,这一点很重要。 这对于了解是否打算动态更改布局的内容特别有用。 在这种情况下,将布局的size constraint属性设置为一个对布局的最小和/或最大大小提供约束的属性(例如SetMinAndMaxSize)将导致每当布局内容更改时,滚动区域的大小就会更新。

有关使用QScrollArea类的完整示例,请参见 Image Viewer 示例。该示例显示了如何组合QLabelQScrollArea来显示图像。

相关文章

网友评论

      本文标题:Qt 之 QScrollArea

      本文链接:https://www.haomeiwen.com/subject/ksbbdktx.html