QSpiltter简介
PyQt提供了一个特殊的布局管理控制QSpiltter, 它既可以看做一个QWidget部件,也可以看做一个动态的布局管理器,QSplitter允许用户拖动子控件的边界控制子控件的大小,并提供一个处理拖曳子控件的控制器,QSplitter对其子控件的布局,默认为横向布局的,可以使用Qt.Vertical参数对子控件进行垂直布局。
QSplitter常用方法有:
- addWidget(): 添加一个控件到QSplitter中
- insertWidget(): 在指定位置向QSplitter中插入一个控件
- indexOf(): 返回指定控件在QSplitter中的索引号
- setOrientation(): 设置布局方向(水平:Qt.Horizontal, 垂直:Qt.Vertical)
- count(): 返回QSplitter中控件的数量
- setSizes():设置控件的初始大小
QSplitter类继承关系:
测试QSplitter
下面的例子测试QSplitter水平和垂直布局,创建文件qsplitter.py,代码如下:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QFrame, QTextEdit, QSplitter, QVBoxLayout
class DemoSplitter(QWidget):
def __init__(self, parent=None):
super(DemoSplitter, self).__init__(parent)
# 设置窗口标题
self.setWindowTitle('实战PyQt5: QSplitter Demo!')
# 设置窗口大小
self.resize(400, 280)
#设置主窗口布局
mainLayout = QVBoxLayout(self)
#创建一个水平Splitter
hSplitter = QSplitter(Qt.Horizontal)
#为hSplitter添加两个控件
frm1 = QFrame(self)
frm1.setFrameShape(QFrame.StyledPanel)
hSplitter.addWidget(frm1)
hSplitter.addWidget(QTextEdit(self))
hSplitter.setSizes([100, 200])
#创建一个垂直Splitter
vSplitter = QSplitter(Qt.Vertical)
vSplitter.addWidget(hSplitter)
frm2 = QFrame(self)
frm2.setFrameShape(QFrame.StyledPanel)
vSplitter.addWidget(frm2)
mainLayout.addWidget(vSplitter)
self.setLayout(mainLayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DemoSplitter()
window.show()
sys.exit(app.exec())
运行结果如下图所示:
测试QSplitter
本文知识点
- QSplitter是一个特殊的QWidget,它是一个用户可交互的布局管理控件;
- QSplitter的创建和使用方法;
- 认识一个新的控件QFrame。