Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在QTreeView中获取当前选定的项目

在QTreeView中获取当前选定的项目
EN

Stack Overflow用户
提问于 2011-08-12 23:55:42
回答 2查看 22.5K关注 0票数 7

我在QTreeView中有许多项。每一项都是使用这个类生成的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Branch(QStandardItem):
    def __init__(self, label, uri = None):
        QStandardItem.__init__(self, label)
        self.uri = uri

这是我的实际树:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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文档非常缺乏,所以真的很难知道我是否曾经以一种有意义的方式做过事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-13 00:39:49

您调用的是正确的函数,它实际上返回了一个QModelIndexList,它只是QList<QModelIndex>的一个类型定义,QModelIndex是可以指向树的任何部分的数据结构。QModelIndex不是模型视图控制器意义上的模型,而是QAbstractItemModel中一个对象的地址,它是所有Qt的ItemView对象下的数据结构,包括您的树。您实际上非常接近,QAbstractModelIndex由行、列和父级组成,这使得它可以访问分层数据结构中的任何位置。如果你使用这行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
index = self.selectedIndexes()[0]
crawler = index.model().itemFromIndex(index)

您应该到达您正在寻找的对象。

至于文档,即使没有python特定的文档来帮助阅读官方的Qt文档,类的层次结构和功能仍然是相同的。文档中只有很少的C++特定信息。

票数 6
EN

Stack Overflow用户

发布于 2015-07-11 22:34:36

哈拉尔德的回答对我不起作用,因为我使用了一个错误作为模型(我得到了QSqlQueryModel {AttributeError}'QSqlQueryModel' object has no attribute 'itemFromIndex')。

下面的代码完成了我的工作,获得了所选行的第0列数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dbQueryModel.itemData(treeView.selectedIndexes()[0])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7047527

复制
相关文章
go 对windows api的调用
package main import ( "syscall" ) func abort(funcname string, err string) { panic(funcname + " failed: "+err) } func print_version(v uint32) { major := byte(v) minor := uint8(v >> 8) build := uint16(v >> 16) print("windows version ", m
李海彬
2018/03/27
2.5K0
对FastApi的API进行限速
今天啊,我的朋友小绿跟我说,那天晚上有个人好快好快!我急忙问他,怎么回事?有多快!他说,他的资源分发接口被人以很快的速度攻击了。速度达到了 10000qps,这对于他那 0.1C125M 的机器来说简直是小车拉大牛,真费车。
Python研究所
2022/06/17
1.2K0
对FastApi的API进行限速
通过Nginx对API进行限速
API 限速的主要目的是控制对 API 的访问频率和数据使用量,以保护 API 和后端服务的稳定性和可靠性。当接收到大量请求时,可能导致服务器过载或响应时间变慢,限制 API 的访问速率可以避免这种情况的发生。此外,API 限速还可以保护 API 免受恶意攻击,如 DDoS 攻击和暴力攻击。另一个原因是,API 提供者可能想要限制 API 的数据使用量,以确保他们的 API 不被滥用或过度使用。可以通过限制每个用户可以请求的数据量,达到该目的,以便 API 提供者可以控制服务的成本和资源使用率。综上所述,API 限速是一种有效的措施,可以确保 API 的稳定性和可靠性,防止 API 被恶意攻击和滥用。Nginx 是当前非常受欢迎的 Web 服务器和反向代理服务器。在高并发、高负载的 Web 场景中,Nginx 的高性能、稳定性和可扩展性优势得到了广泛认可,因此 Nginx 在这些场景下往往是最佳选择。Nginx 也支持 HTTP、HTTPS、SMTP、POP3 等多种协议,以及负载均衡、缓存、反向代理、安全控制等多种功能,使得它可以适用于各种不同的 Web 代理场景。
小阑本阑
2023/07/27
4310
通过Nginx对API进行限速
C/C++ 调用API获取当前时间
#include <string> #include<iostream> #include<windows.h> #include <sstream> using namespace std; string WORDToString(WORD w) {     char tmpbuff[16];     sprintf(tmpbuff,"%d",w);     string res=tmpbuff;     return res; } string getTime() {     string week
微软技术分享
2022/12/28
6680
ChatGPT 使用 API 进行 Postman 调用测试
当获得 ChatGPT 的 API Key 以后,想使用 Postman 来进行一下调用。
HoneyMoose
2023/01/05
2.8K0
ChatGPT 使用 API 进行 Postman 调用测试
pycharm profile对函数调用效率进行测试
假设有如下代码: def func1(): for i in range(1000): print("i love python") def func2(): for i in range(10): print("i love c++") func3() def func3(): for i in range(100): print("i love java") def main(): func1()
Michael阿明
2022/03/10
1.1K0
pycharm profile对函数调用效率进行测试
python:对url api调用做简单负载均衡
因为我的服务大部分部署在了单机多个连续的端口中(如svc2 8100-8130端口),所以可以简单的做均衡。如果是多机多端口。那就另当别论了。 代码相当简单
超级大猪
2019/11/22
7420
Python调用微博API获取微博内容
    使用自己的微博账号登录微博开放平台(http://open.weibo.com/),在微博开放中心下“创建应用”创建一个应用,应用信息那些随便填,填写完毕后,不需要提交审核,需要的只是那个app-key和app-secret
py3study
2020/01/10
4K0
Python调用微博API获取微博内容
博客园api调用实例:获取授权码
博客园 OpenAPI文档 https://api.cnblogs.com/help
冰霜
2023/02/24
7060
博客园api调用实例:获取授权码
dotnet 是否应该对 HttpResponseMessage 调用 Dispose 进行释放
对于 HttpClient 的请求响应值 HttpResponseMessage 来说,既然继承了 IDisposable 接口,自然就是想让大家可以通过 using 或者手动调用 Dispose 进行释放的。本文将来聊聊对 HttpResponseMessage 调用 Dispose 进行释放的意义有多大,有没有必要性的问题
林德熙
2023/07/24
4290
reactjs
最近在学习react js,ReactJS是Facebook开发的用于构建用户界面的JAVASCRIPT库,利用其可以实现组件式开发。
用户1394570
2018/08/08
1.3K0
python3 下调用zabbix api 获取多个机房的IP
根据工作的需要,需要查看监控中的所有ip,我们一共有三个机房,每个机房都部署了同样的zabbix监控 根据三个园区的 监控api的url 实现功能:不输入参数 显示所有ip 输入参数 ali yq m6 返回对应area的ip #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 17/9/13 上午8:47 # @Author : lee # @File : zabbix_ip_3area.py # @Software: PyChar
98k
2018/04/11
1.8K0
Java的API调用
, 4 2月 2021 作者 847954981@qq.com 后端学习 Java的API调用 在页面抓取前,我们在.xml文件中安装库 依赖库安装 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.1.0</version> </dependency> 以此安装了okhttp3来实现API的抓取 其次就是代码本体: 我们需要的是API的调用 import
摸鱼的G
2023/02/22
1.5K0
百度语音识别api使用python进行调用
百度语音现在是比较方便的接口,具体说明请看官方文档,本文分两个部分,先是使用python实现录音,然后再使用百度语音api进行识别上传。
十四君
2019/11/28
1.8K0
百度语音识别api使用python进行调用
调用腾讯优图开放平台进行人脸识别-Java调用API实现
保存SIGN 或者每次都生成一个也可以 方便测试就直接每次生成一个了
小帅丶
2018/01/11
4.2K0
C# 通过HttpWebRequest在后台对WebService进行调用
http://www.cnblogs.com/macroxu-1982/archive/2009/12/23/1630415.html
跟着阿笨一起玩NET
2018/09/20
2.8K0
调用腾讯优图开放平台进行人脸识别-Java调用API实现
第一步:鉴权服务技术方案 Java代码实现如下 import java.util.Date; import com.baidu.aip.util.Base64Util; /** *
小帅丶
2018/02/08
2K1
调用腾讯优图开放平台进行人脸识别-Java调用API实现
点击加载更多

相似问题

如何根据reactjs中的url在reactjs中进行Api调用?

21

无法对获取成功事件的API调用进行重试

10

ReactJS -在火狐上无休止地调用onDragEnd

10

Reactjs测试api调用

113

Reactjs中的API调用

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文