2016-07-18 48 views
0

我正在開發一個項目並使用樹視圖。我做了大量的搜索和所有的發現我的答案是遍歷整個樹視圖,但不是如何去做,所以我的問題是如何搜索包含輸入字符串的項目的樹視圖。這個想法將會有一個輸入框,當用戶按下包含用戶輸入內容的搜索項時,用戶可以在其中輸入內容。我不確定我是否可以在樹視圖中執行此操作,或者是否必須進入列表視圖。我在Windows 7 pyqt5蟒蛇3.5正在搜索TreeView

self.treeView = QtWidgets.QTreeView(self.centralWidget) 
self.treeView.setSortingEnabled(True) 
self.treeView.setObjectName("treeView") 
self.horizontalLayout_4.addWidget(self.treeView) 
self.file_model=QtWidgets.QFileSystemModel() 
self.file_model.setRootPath('C:\My Stuff\Movies') 
self.treeView.setModel(self.file_model) 
self.treeView.setRootIndex(self.file_model.index('C:\My Stuff\Movies')) 
self.treeView.setHeaderHidden(True) 
self.treeView.hideColumn(1) 
self.treeView.hideColumn(2) 
self.treeView.hideColumn(3) 
+0

此外,如果有人知道如何排序樹狀圖,這將有所幫助 –

+0

你想搜索模型,而不是我認爲的看法。在模型中找到索引後,可以在視圖上選擇該索引。 –

+0

我認爲你需要在視圖和模型之間使用QSortFilterProxyModel。這就是我用於桌子的原因,我認爲樹木也是如此。 –

回答

0

這個答案是解決方案的大綱。

你會發現我寫的SCM工作臺有用的參考代碼:

https://github.com/barry-scott/scm-workbench/blob/master/Source/Scm/wb_scm_table_model.py

在我的應用程序的功能indexFromBookmark()我覺得是接近你想要 。

要開始你需要樹的根。你用self.invisibleRootItem()得到這個項目。

您可以詢問該物品的兩件有趣的事情。它的名稱從item.text()及其子節點通過調用item.child(row)從0開始。

當找到感興趣的項目時,可以使用indexFromItem()將項目變爲索引。例如,您需要一個索引來設置樹中的選擇。

帶有文件名我想你分割'\'和每個項目文本()是路徑部分。