【问题标题】:Searching a TreeView搜索树视图
【发布时间】:2016-07-18 08:33:12
【问题描述】:

我正在处理一个项目并使用树视图。我做了很多搜索,我发现我的答案是遍历整个树视图,但甚至不知道如何去做,所以我的问题是如何在树视图中搜索包含输入字符串的项目。这个想法将是有一个输入框并让用户在其中输入一些内容,当他们按下包含用户输入内容的搜索项时。我不确定我是否可以在树视图中执行此操作,或者是否必须进入列表视图。我在 windows 7 pyqt5 python 3.5

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)

【问题讨论】:

  • 另外,如果有人知道如何对树视图进行排序会有所帮助
  • 您想搜索模型而不是我认为的视图。在模型中找到索引后,您可以在视图中选择该索引。
  • 我认为您需要在视图和模型之间使用 QSortFilterProxyModel。这就是我用于表格的方法,我认为树木也是如此。
  • @BarryScott 感谢您的帮助。我该怎么做呢?

标签: python treeview pyqt5


【解决方案1】:

这个答案是解决方案的概要。

您可能会发现我为 SCM Workbench 编写的代码可供参考:

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() 将项目转换为索引。例如,您需要一个索引来设置树中的选择。

我猜你用文件名分割'\',每个项目 text() 是路径部分。

【讨论】:

    猜你喜欢
    • 2012-07-16
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2013-05-11
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多