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

一、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_())

运行:
在这里插入图片描述
这里创建了一个多行的文本框,作为滚动控件,但是它并没有显示滚动条,这是由于默认的滚动条策略为:当文本内容较多,无法被完全显示时,才出现滚动条。而且,这里是不会出现水平滚动条的,因为当水平方向达到控件宽度时,将自动换行:
在这里插入图片描述

三、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_())

运行:
在这里插入图片描述

2. 角落控件

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

QAbstractScrollArea 可以设置一个角落控件:
在这里插入图片描述
图中,红圈部分为角落控件的位置,即在红圈处,是可以添加一个控件的:

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_())

运行:
在这里插入图片描述
这个按键就是一个QPushButton,这里的水平滚动策略是无效了,只是为了突出角落,注意到,即使不设置水平滚动条,这个角落控件仍然功能仍然是存在的:
在这里插入图片描述

3. 自定义滚动条

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值