pyQt5 学习笔记(20)QAbstractScrollArea 滚动区域

文章目录

  • 一、QAbstractScrollArea 简介
  • 二、QAbstractScrollArea 的使用
  • 三、QAbstractScrollArea 常用功能(API)
    • 1. 设置滚动条测试
    • 2. 角落控件
    • 3. 自定义滚动条

一、QAbstractScrollArea 简介

QAbstractScrollArea 是一个滚动区域的类,合适显示内容较多的控件,通过滚动来显示不同的内容。其继承自QFrame,由于是一个虚拟的类,不能被直接实例化,所以可以使用其子类QTextEidt来测试它的一些功能函数。主要有设置水平或垂直的滚动条及其策略,角落控制等功能。

二、QAbstractScrollArea 的使用

创建一个QTextEdit:

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

w = QWidget()
w.setWindowTitle("QAbstractScrollArea")
w.resize(300, 300)

te = QTextEdit(w)

w.show()

if __name__ == '__main__':
    sys.exit(app.exec_())

运行:
pyQt5 学习笔记(20)QAbstractScrollArea 滚动区域_第1张图片
这里创建了一个多行的文本框,作为滚动控件,但是它并没有显示滚动条,这是由于默认的滚动条策略为:当文本内容较多,无法被完全显示时,才出现滚动条。而且,这里是不会出现水平滚动条的,因为当水平方向达到控件宽度时,将自动换行:
pyQt5 学习笔记(20)QAbstractScrollArea 滚动区域_第2张图片

三、QAbstractScrollArea 常用功能(API)

1. 设置滚动条测试

API 含义
setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy) 设置水平滚动条策略
setVerticalScrollBarPolicy(Qt.ScrollBarPolicy) 设置垂直滚动条策略

其策略为一个枚举值:

策略 含义
Qt.ScrollBarAsNeeded 必要时显示(文本内容超过控件大小时 )
Qt.ScrollBarAlwaysOff 一直显示
Qt.ScrollBarAlwaysOn 一直不显示

示例:设置滚动条一直显示:

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

w = QWidget()
w.setWindowTitle("QAbstractScrollArea")
w.resize(300, 300)

te = QTextEdit(w)
te.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)

w.show()

if __name__ == '__main__':
    sys.exit(app.exec_())

运行:
pyQt5 学习笔记(20)QAbstractScrollArea 滚动区域_第3张图片

2. 角落控件

API 含义
setCornerWidget(QWidget *widget) 在角落设置一个控件

QAbstractScrollArea 可以设置一个角落控件:
pyQt5 学习笔记(20)QAbstractScrollArea 滚动区域_第4张图片
图中,红圈部分为角落控件的位置,即在红圈处,是可以添加一个控件的:

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

w = QWidget()
w.setWindowTitle("QAbstractScrollArea")
w.resize(300, 300)

te = QTextEdit(w)
te.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
te.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)

btn = QPushButton(w)
btn.setIcon(QIcon("powerBtn"))
te.setCornerWidget(btn)

w.show()

if __name__ == '__main__':
    sys.exit(app.exec_())

运行:
pyQt5 学习笔记(20)QAbstractScrollArea 滚动区域_第5张图片
这个按键就是一个QPushButton,这里的水平滚动策略是无效了,只是为了突出角落,注意到,即使不设置水平滚动条,这个角落控件仍然功能仍然是存在的:
pyQt5 学习笔记(20)QAbstractScrollArea 滚动区域_第6张图片

3. 自定义滚动条

相关 API 含义
setHorizo​​ntalScrollBar(QScrollBar * scrollBar) 设置水平滚动条
setVerticalScrollBar(QScrollBar * scrollBar) 设置垂直滚动条

通过以上函数可以自定义滚动条,但是需要设置scrollBar控件,后续再作介绍。

你可能感兴趣的:(#,pyQt5)