滚动区域QAbstractScrollArea使用方法详解和实战效果验证
为了方便学习后面的QTextEdit多行文本框控件,本章和前面的QFrame都是作为铺垫,QAbstractScrollArea继承自QFrame,注意QAbstractScrollArea实际上不是抽象的,只是该类的功能不够完整,所以才看做为抽象类。QAbstractScrollArea主要用于被继承来实现自定义的滚动区域,简单理解为滚动条区域。
为了方便学习后面的QTextEdit多行文本框控件,本章和前面的QFrame都是作为铺垫,QAbstractScrollArea继承自QFrame,注意QAbstractScrollArea实际上不是抽象的,只是该类的功能不够完整,所以才看做为抽象类。QAbstractScrollArea主要用于被继承来实现自定义的滚动区域,简单理解为滚动条区域。
QAbstractScrollArea的知识点主要分为三个方面:水平和垂直滚动条设置、滚动条设置策略、角落控件的使用方法。
QAbstractScrollArea设置滚动条的方法主要有水平和垂直2个方向的,分别是setVerticalScrollBarPolicy()和setHorizontalScrollBarPolicy(),至于滚动条的设置策略Qt给我们枚举了一些值:
# Qt.ScrollBarAlwaysOn # Qt.ScrollBarAlwaysOff # Qt.ScrollBarAsNeeded
简单演示一下
qte = QTextEdit('PyQt5中文网:www.pyqt5.cn', window) qte.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
这样看不出来效果,可以把内容多复制几次就能看到以下效果了:
横向滚动条设置也是一样的,这里就不演示了,但是在横向和纵向滚动条同时设置的时候,两个滚动条交接的地方会出现空白区域,PyQt也为我们考虑到了,这就是角落控件设置,通过一个按钮控件就能填充角落了,直接上代码看效果。
btn = QPushButton(window) btn.setIcon(QIcon('123.jpg')) qte.setCornerWidget(btn)
下面是完整代码:
from PyQt5.Qt import * import sys app = QApplication(sys.argv) window = QWidget() window.setWindowTitle('QAbstractScrollArea-多行文本框滚动条 - PyQt5中文网') window.resize(600, 450) window.move(300, 300) qte = QTextEdit('PyQt5中文网:www.pyqt5.cn', window) # 设置滚动条,设置滚动策略 # Qt.ScrollBarAlwaysOn # Qt.ScrollBarAlwaysOff # Qt.ScrollBarAsNeeded qte.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) # qte.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) # qte.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) # 角落控件 btn = QPushButton(window) btn.setIcon(QIcon('123.jpg')) qte.setCornerWidget(btn) window.show() sys.exit(app.exec_())