获取QTreeView中当前选定的项目

2023-11-27

我在 QTreeView 中有很多项目。每个项目都是使用此类生成的:

class Branch(QStandardItem):
    def __init__(self, label, uri = None):
        QStandardItem.__init__(self, label)
        self.uri = uri

这是我真正的树:

class FileTree(QTreeView):
    def __init__(self):
        QTreeView.__init__(self)
    def keyPressEvent(self, event):
        if event.key() == Qt.Key_Space or event.key() == Qt.Key_Return:
            crawler = self.selectedIndexes()[0].model().item(self.selectedIndexes()[0].row())
            print(crawler.uri)
        QTreeView.keyPressEvent(self, event)

正如您所看到的,我有点不确定如何从所选项目中获取 uri 变量。我找到selectedIndexes()返回模型而不是项目本身。我不知道如何从一个到另一个。尝试使用获取项目编号self.selectedIndexes()[0].row()有点像在黑暗中拍摄,但它似乎忽略了树中的各个分支(例如,它会给我一个0对于分支中的第一行,但不会告诉我有关它所在分支的任何信息)。

从 QTreeView 获取所选项目的正确方法是什么?或者是否有更好的方法来检测按下的空格键或返回键,从而使这变得更容易? Qt 的 Python 文档严重缺乏,所以很难知道我是否以合理的方式做事。


您正在调用正确的函数,它实际上返回一个QModelIndexList这只是一个 typedefQList<QModelIndex>QModelIndex是可以指向的数据结构any树的一部分。QModelIndex不是模型视图控制器(MVC)意义上的模型,而是一个对象的地址QAbstractItemModel这是所有 Qt 的 ItemView 对象(包括您的树)下的数据结构。其实你们已经很接近了QAbstractModelIndex由行、列和父级组成,这使得它可以寻址分层数据结构中的任何位置。如果您使用该线路

index = self.selectedIndexes()[0]
crawler = index.model().itemFromIndex(index)

你应该找到你正在寻找的物体。

至于文档,尽管没有特定于 python 的文档,但阅读官方 Qt 文档会有所帮助,但类层次结构和功能仍然是相同的。文档中几乎没有 C++ 特定信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取QTreeView中当前选定的项目 的相关文章

随机推荐

  • Android:如何获取当前设备 WiFi-direct 名称

    在 P2P 设置中 我了解如何获取另一个设备的名称 但如何获取我自己的设备的名称 设置下的 WiFi direct 中显示的那个 我检查过WiFiManager WiFiInfo 还有更多没有成功 打开设备上的 wifi 后 它会发送 WI
  • 有条件地选择 MYSQL 列

    我的问题的示例架构位于SQLFiddle如下 CREATE TABLE players player1id int 11 NOT NULL player2id int 11 NOT NULL PRIMARY KEY player1id pl
  • Swift 核心数据谓词 IN 子句

    我正在尝试将 IN 子句与 NSPredicate 一起使用 我收到以下错误 由于未捕获的异常 NSInvalidArgumentException 而终止应用程序 原因 NSTaggedPointerString countByEnume
  • NSMakeRange(i, 1) 是什么意思?

    我刚刚开始学习iOS 什么是 NSMakeRange i 1 意思是 for int i 0 i lt name length i NSRange range NSMakeRange i 1 NSString subString name
  • 在 php 中创建 web 服务是否需要 wsdl 文件?

    我的问题需要对网络服务有一些基本的了解 更具体地说 与 php 结合使用 我想知道 是否需要有一个 wsdl 文件来创建 Web 服务 或者这对想要访问 Web 服务的第三方有用 另外 它在 net环境中自动生成 但对于php来说有点困难
  • 5 张图像,用对角线对称分隔

    我浏览互联网并在 Reddit 上偶然发现了这个主题 看到这个可爱的横幅后 我想尝试使用我选择的五个对称图像来模拟类似的东西 这些图像由对角线分隔 就像上图一样 也许还可以尝试在各种图像上添加一些文字 像这样的东西 我尝试使用猫图片在 cs
  • 找不到查询模式的实现

    在我的 silverlight 应用程序中 我尝试使用 LINQ 创建数据库连接 首先 我添加一个新的 LINQ to SQL 类 并将名为 tblPerson 的表拖入其中 然后在我的服务文件中我尝试执行以下查询 OperationCon
  • 在 React 应用程序中加载初始服务器数据的逻辑应该放在哪里?

    我正在使用 React Redux 来构建一个应用程序 要加载 React 智能组件的初始数据 我需要调度一个Redux服务器数据请求将发生的操作 我尝试在构造函数 ES6 实现 中分派操作 componentWillMount and c
  • java.lang.IllegalArgumentException:不能有 viewTypeCount < 1

    我收到此错误 java lang IllegalArgumentException Can t have a viewTypeCount lt 1 我很确定我确切地知道是什么原因造成的 但我不知道如何解决它 我的应用程序从数据库加载用户朋友
  • FormHelper::label 和 FormTagHelper::label_tag 有什么区别?

    我正在编写一个处理多个模型的表单 有关如何执行此操作的一些示例ActionView Helpers FormHelper 标签 还有一些使用ActionView Helpers FormTagHelper label tag 我真的不明白其
  • 如何在 Xcode 中的模拟器构建中排除框架

    当我编译应用程序以在模拟器上运行时 如何从 Xcode 项目中排除仅为 iOS 设备架构编译的库 libssh2 等 我知道这是一个老问题 但如果有人仍在寻找答案 您可以使用弱链接指定某些库是optional See 这个答案是关于如何在
  • 如何使用jquery将整个html页面放入div中?

    首先 我想让大家知道我是一个绝对的初学者 所以请耐心等待 我想知道如何将整个 html 页面放入 div 中 我试过 footballPlayers html footballplayers html 但它显示footballplayers
  • 我究竟做错了什么? Java 非法格式转换异常

    我有一些计算圆属性的代码 package circleinfo import java util Scanner public class Circleinfo public static void main String args Sca
  • “hg revert”后我的更改消失了吗?

    在我上次提交之后 我写了一堆代码 在再次提交之前 我跑了hg add 它添加了一些我不感兴趣的文件 所以我跑了 hg revert all 认为所有添加的文件都会消失 它们确实消失了 但我还恢复了自上次提交以来编写的所有代码 这意味着大量工
  • 我是否必须将令牌存储在 cookie、本地存储或会话中?

    我正在使用 React SPA Express Express session Passport 和 JWT 我对存储令牌的一些不同客户端存储选项感到困惑 Cookie Session 和 JWT Passport 令牌是否必须存储在 co
  • 如何在Python中获取两个时间对象之间的差异

    我在 Python 中有两个 datetime time 对象 例如 gt gt gt x datetime time 9 30 30 0 gt gt gt y datetime time 9 30 31 100000 但是 当我对 dat
  • 在 com.google.android.gms.measurement.internal 解除绑定时抛出异常

    我收到此异常 但我不知道如何找到问题所在 也不知道是什么原因导致的 你能帮我吗 W ConnectionTracker Exception thrown while unbinding java lang IllegalArgumentEx
  • perl6 插入数组以匹配 AND、OR、NOT 函数

    我正在尝试重新执行我的程序 以匹配数组中的所有项目 匹配任意项目 不匹配项目 Perl6 的一些文档没有解释当前实现的行为 Rakudo 2018 04 我还有几个问题 1 正则表达式的文档说将数组插入匹配正则表达式意味着 最长匹配 但是
  • 如何让 IntelliJ IDEA 理解我的空检查方法?

    我有一个方法 其中参数标记为 Nonnull注解 调用该方法的代码必须检查该值是否为空 而不仅仅是直x null检查 它正在调用另一个类上的实用方法 在实际代码中 实用程序方法还会检查它是否为空字符串 我的问题是 Intellij Idea
  • 获取QTreeView中当前选定的项目

    我在 QTreeView 中有很多项目 每个项目都是使用此类生成的 class Branch QStandardItem def init self label uri None QStandardItem init self label