QSplitter是用来分割窗口的,比如下面的窗口:
QmainWindow上面有三个widget,一个TextEdit,一个ListWidget,一个TreeWidget,要让他们分占窗口,并且鼠标放到两个widget的边界,还可以拖拽来改变widget的大小。
下面我们看看如何实现:
class MainWindow(QMainWindow):
def __init__(self,parent=None):
super(MainWindow,self).__init__(parent)
self.textedit = QTextEdit()
self.textedit.setText("This is a TextEdit!")
self.listwidget = QListWidget()
self.listwidget.addItem("This\nis\na\nListWidget!")
self.treewidget = QTreeWidget()
self.treewidget.setHeaderLabels(['This','is','a','TreeWidgets!'])
splitter = QSplitter(self)
splitter.addWidget(self.textedit)
splitter.addWidget(self.listwidget)
splitter.addWidget(self.treewidget)
splitter.setOrientation(Qt.Vertical)
self.setCentralWidget(splitter)
我们创建了三个widget以后,我们通过创建一个Qsplitter(parent),注意它的参数此处是self,也就是我们的MainWindow。
然后把三个widget通过addwidget方法加到Qsplitter上,如果我们不调用setOrientation(Qt.Vertical)的话,三个控件默认是水平摆放的,这里我们调用了,变为了垂直摆放,最后把splitter放到了MainWindow上。
另外Qsplitter还有别的很多methods。
Qsplitter.insertWidget(self,int index,Qwidget widget)在index序号处插入一个widget。
Qsplitter.indexOf(self,Qwidget widget)可以得到一个widget的index。
当然如果要隐藏某一个widget,可以调用hide()方法,要显示可以调用show()方法。
Qsplitter.count()返回一个splitter里面的widget的数目。
QSplitter.restoreState()和QSplitter.saveState()用来保存和恢复状态,一般和Qsetting一起使用。