|
50鱼币
本帖最后由 继续思索 于 2018-2-1 21:43 编辑
请问PyQt的Treeview控件怎样,初始化展开指定一层节点?如下图
有鱼油知道的麻烦告知一下。谢谢
需要这样的效果,有什么方法可用?
就打开窗口时,自动的展开第一层。
而不是下边这样 全展开的。。。
- from PyQt5.QtCore import Qt, QRect
- from PyQt5.QtGui import QStandardItemModel, QStandardItem
- from PyQt5.QtWidgets import QDialog, QApplication
- from PyQt5 import QtWidgets
- class Dialog(QDialog):
- """
- Class documentation goes here.
- """
- def __init__(self, parent=None):
- """
- Constructor
-
- @param parent reference to the parent widget
- @type QWidget
- """
- super(Dialog, self).__init__(parent)
- self.setupUi(self)
-
- date_1 = ["2018-1-1", "2018-1-2","2018-1-3"]
- title = [["标题1","标题2" ], ["标题A","标题B","标题C"], ["标题a"]]
- connect = [[["内容1","内容1"], ["内容1","内容1"]],\
- [["内容1","内容2222"], ["内容2222","内容2222"], ["内容2222","内容2222"]], \
- [["内容333","内容333"]]
- ]
- self.tv_Catalog_two_2(self.treeView,date_1, title,connect )
- self.treeView.expandAll()
-
- def setupUi(self, Dialog):
- Dialog.setObjectName("Dialog")
- Dialog.resize(765, 500)
- Dialog.setSizeGripEnabled(True)
- self.treeView = QtWidgets.QTreeView(Dialog)
- self.treeView.setGeometry(QRect(20, 20, 711, 441))
- self.treeView.setObjectName("treeView")
-
-
- def tv_Catalog_two_2(self, controls, list_data_one, list_data_two, list_data_three, win_title="标题" ):
- """
- # 参数1:
- """
- model = QStandardItemModel(controls)
- model.setColumnCount( 1 )
- model.setRowCount( len(list_data_one) )
- model.setHeaderData(0, Qt.Horizontal, win_title )
-
- count_i = -1
- count_j = -1
-
- for temp_i in list_data_one :
- count_i += 1
- root_item = QStandardItem( temp_i )
- for temp_j in list_data_two[count_i]:
- count_j += 1
- item2 = QStandardItem( temp_j )
- root_item.appendRow(item2)
- for temp_p in list_data_three[count_i][count_j]:
- item3 = QStandardItem( temp_p )
- item2.appendRow(item3)
- count_j = -1
- model.setItem(count_i, 0, root_item )
- controls.setModel(model)
- if __name__ == "__main__":
- import sys
- app = QApplication(sys.argv)
- ui = Dialog()
- ui.show()
- sys.exit(app.exec_())
复制代码 |
|