拆分窗口QSplitter
拆分窗口中可以添加许多子控件,各个子控件通过拆分线相互分隔开来,拖动该拆分线可以随意改变子控件大小
1 import sys 2 from PyQt5.QtCore import Qt 3 from PyQt5.QtWidgets import QApplication, QSplitter, QListView, QTreeView, QTableView, QDirModel,QWidget 4 5 class Demo(QWidget): 6 def __init__(self): 7 super(Demo, self).__init__() 8 self.resize(800,220) 9 self.p=QSplitter(self) #实例化拆分窗口 10 self.dir_model = QDirModel(self) # 实例化目录模型QDirModel 11 12 self.list_view = QListView(self) 13 self.tree_view = QTreeView(self) 14 self.table_view = QTableView(self) 15 self.list_view.setModel(self.dir_model) #给列表视图设置模型【目录模型】 16 self.tree_view.setModel(self.dir_model) #给树形视图设置模型【目录模型】【列出目录-非常好】 17 self.table_view.setModel(self.dir_model)#给表格视图设置模型 18 self.tree_view.move(270,0) 19 self.table_view.move(540,0) 20 21 self.tree_view.doubleClicked.connect(self.show_func) #双击树形视图时发出信号 22 #此信号会自动发出包含被双击项信息的参数 23 24 #self.p.setOrientation(Qt.Vertical) #设置拆分窗口的方向 25 #Qt.Vertical 垂直方向 26 #拆分窗口默认是水平 27 28 self.p.addWidget(self.list_view) #给拆分窗口添加控件 29 self.p.addWidget(self.tree_view) 30 self.p.insertWidget(0, self.table_view) #给拆分窗口插入控件。参数1:位置 31 self.p.setSizes([300, 200, 200]) #设置子控件的高度-垂直,宽度-水平 32 print(self.p.count()) #返回子控件的数量 33 # 34 35 def show_func(self, index): 36 37 self.list_view.setRootIndex(index) #设置列表视图的根索引。把index项目做为列表视图的根索引并显示出来 38 self.table_view.setRootIndex(index) #设置表格视图的根索引 39 40 41 if __name__ == '__main__': 42 app = QApplication(sys.argv) 43 demo = Demo() 44 demo.show() 45 sys.exit(app.exec_())