拆分窗口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_())

 

posted @ 2019-02-15 13:24  天子骄龙  阅读(445)  评论(0编辑  收藏  举报