Qt:QAbstractItemModel 中的 setData 方法

2023-11-22

我是模型视图新手,我一直在关注本教程在检查文档的同时,我偶然发现了这个小细节:可以下载的教程代码hereQAbstractItemModel 类(此处为 QAbstractListModel)中有 setData 方法,其代码为:

def setData(self, index, value, role = QtCore.Qt.EditRole):
    if role == QtCore.Qt.EditRole:

        row = index.row()
        color = QtGui.QColor(value)

        if color.isValid():
            self.__colors[row] = color
            self.dataChanged.emit(index, index)
            return True
    return False

根据教程中的解释以及我从文档中理解的内容,如果函数返回 True,则视图会更新,如果返回 false,则不会发生任何情况,但是当我将代码更改为:

def setData(self, index, value, role = QtCore.Qt.EditRole):
    if role == QtCore.Qt.EditRole:

        row = index.row()
        color = QtGui.QColor(value)

        if color.isValid():
            self.__colors[row] = color
            self.dataChanged.emit(index, index)
            return False # This is what I changed in the code
    return False

我意识到,如果 color.isValid() ,即使函数返回 False,视图仍然会更新。我是否误解了 setData 方法中的返回角色或者这是一个错误?

作为参考,我使用的是 PySide 1.2.1,而不是 PyQt4。


引用视频教程中有关setData:

...如果操作成功,该函数需要返回true, 否则视图将不会自行更新。

严格来说,这种说法是错误的。的文档QA抽象项目模型只是这么说setData如果数据设置成功则返回 true,否则返回 false;它没有提及这可能会产生什么后果。具体来说,它没有提及任何有关更新视图的内容。

查看Qt源码,返回值是setData does在一些地方进行检查,其中一些检查可以有时帮助触发更新。但实际上有很多事情可以触发更新,所以返回值setData对于更新项目来说并不重要。

也许更准确的说法是setData should返回true,否则视图may not自行更新(在某些情况下)。

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

Qt:QAbstractItemModel 中的 setData 方法 的相关文章

  • python sys.path 故障排除

    python 文档位于http docs python org library sys html http docs python org library sys html比如说sys path is 从环境变量 PYTHONPATH 以及
  • Python 切片对象和 __getitem__

    python 中是否有内部的东西来处理传递给的参数 getitem 不同 并自动转换start stop step构造成切片 这是我的意思的演示 class ExampleClass object def getitem self args
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 在python中将数据库表写入文件的最快方法

    我正在尝试从数据库中提取大量数据并将其写入 csv 文件 我正在尝试找出最快的方法来做到这一点 我发现在 fetchall 的结果上运行 writerows 比下面的代码慢 40 with open filename a as f writ
  • 如何返回 cost, grad 作为 scipy 的 fmin_cg 函数的元组

    我怎样才能使 scipy 的fmin cg使用一个返回的函数cost and gradient作为元组 问题是有f对于成本和fprime对于梯度 我可能必须执行两次操作 非常昂贵 grad and cost被计算 此外 在它们之间共享变量可
  • Matplotlib:如何有效地将大量线段着色为独立渐变

    Python 绘图库 如何有效地将大量线段着色为独立渐变 已经 阅读this https stackoverflow com questions 8500700 how to plot a gradient color line in ma
  • 如何过滤 Pandas GroupBy 对象并获取 GroupBy 对象?

    当对 Pandas groupby 操作的结果执行过滤时 它返回一个数据帧 但假设我想执行进一步的分组计算 我必须再次调用 groupby 这似乎有点绕 有更惯用的方法吗 EDIT 为了说明我在说什么 我们无耻地从 Pandas 文档中窃取
  • Python Tkinter 模块不显示输出

    我正在尝试学习 Python 并尝试使用 Python 中的 GUI 并遇到了这个 Tkinter 模块 我的代码运行 但运行时窗口没有出现 我的代码如下 from Tkinter import to create a root windo
  • AttributeError:“模块”对象没有属性[重复]

    这个问题在这里已经有答案了 我有两个 python 模块 a py import b def hello print hello print a py print hello print b hi b py import a def hi
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • Python Anaconda:如何测试更新的库是否与我现有的代码兼容?

    我在 Windows 7 机器上使用 Python 2 7 Anaconda 安装进行数据分析和科学计算 当新的库发布时 例如新版本的 pandas patsy 等 您建议我如何测试新版本与现有代码的兼容性 是否可以在同一台机器上安装两个
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • 为什么 __dict__ 和 __weakref__ 类从未在 Python 中重新定义?

    类创建似乎从来没有re 定义 dict and weakref class属性 即 如果它们已经存在于超类的字典中 则它们不会添加到其子类的字典中 但始终re 定义 doc and module class属性 为什么 gt gt gt c
  • 使用 PIL 在 Tkinter 中显示动画 GIF

    我正在尝试制作一个程序来使用 Tkinter 显示动画 GIF 这是我最初使用的代码 from future import division Just because division doesn t work right in 2 7 4
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n

随机推荐

  • Cocoa Core Data 新手指南

    我是众多热衷于尝试 Mac OS X 开发的未经洗礼的 NET 开发人员之一 目前我正在尝试弄清楚 Cocoa 的各种元素 但在核心数据上有点卡住了 我注意到 Web 上提供的大多数文档和资源都涉及广泛的端到端教程 从模型 生成类 基于文档
  • 如何在 pandas DataFrame 中存储公式而不是值

    是否可以像使用 Excel 电子表格一样使用 pandas DataFrame 例如 通过在列中输入公式 以便当其他列中的变量发生变化时 该列中的值会自动更改 就像是 a b c 2 3 a b 所以当我更新 2 或 3 时 该列c也会自动
  • 如何将一个字符串与另一个字符串进行比较,其中字符串之间有空格

    如何比较这两个字符串 val a fit bit versa val b fitbit 另一个例子 val a go pro hero 6 val b gopro 另一个例子 val a hero go pro 6 val b gopro
  • 将 RecyclerView CardView 单击的项目数据传递给 Activity

    我有一个关于将点击的卡片视图数据传递给活动的问题 这里是完整的故事 我有一个名为 Details 的 Activity 它的布局 Title 和 Description 中包含 2 个 TextView 我设置了一个片段 tab 1 其中包
  • 什么是CSS滚动行为属性?

    我最近注意到一个scroll behavior我可以在 css 中指定的属性 它只能有 2 个属性 inherit and initial 我以前从未听说过 见过它 所以我尝试看看它 问题是所有的链接都在解释不同的事情overflow财产
  • Python 3:何时使用字典,何时使用元组列表?

    I have id例如 监狱里的囚犯 每个囚犯都有一个名字 我知道字典如何工作 我知道元组如何工作 我知道列表如何工作 但有时我看到正在使用字典 有时看到元组列表 在我的情况下我应该使用哪一个 d 1 Mike 2 Bob 3 Tom vs
  • 如何更改 Node.js 中的默认目录? (视窗)

    当我尝试在节点上运行我的项目时 我必须编写 javascript 文件的完整路径 因为节点使用的默认值是C Users MyUser我拒绝使用它 我一直在尝试寻找如何改变这一点 但没有在任何地方找到它 我什至尝试手动搜索目录 但没有找到它
  • 为什么 .NET 程序能够在损坏的堆栈中幸存下来? (当使用错误的调用约定时)

    在VS2010中 托管调试助手会给你一个pInvokeStackImbalance异常 pInvokeStackImbalance MDA 如果您使用错误的调用约定调用函数 通常是因为您在调用 C 库时没有指定 CallingConvent
  • 我需要查看 HTML 图像地图区域

    我试图在我的图像上设置一个地图区域 但我希望它是一个八边形 所以我真的需要看看我正在绘制的内容 不幸的是 我无法设置区域标签的样式 以便我可以看到映射发生的位置 这使得我很难绘制这些区域 我每次都必须用鼠标跟随它才能知道它从哪里开始和在哪里
  • Cleartool:如何将标签应用于仅在我当前视图中的文件?

    我找不到正确的命令来将标签应用于当前视图中的文件 我尝试过以下命令 cleartool mklabel r TEST LABEL vob test a 但是 问题是该命令将应用 Test Label 为 中的每个文件添加标签vob test
  • 将 NOT IN 转换为 NOT EXISTS

    在理解 NOT EXISTS 的用法时经历了一场噩梦 主要是如何转换下面的 NOT IN 解决方案 以便我能够真正理解我是如何实现结果的 在askTom oracle 论坛和stackoverflow 上有几篇文章 但找不到任何明显有助于理
  • python3中的sys.stdout.write在字符串末尾添加11

    有人可以解释为什么吗sys stdout write 追加11到我的绳子 python3 Python 3 4 3 default Jul 28 2015 13 17 50 GCC 4 9 3 on linux Type help copy
  • 在身份验证库中找不到 GoogleSignIn 类

    我在通过 Android 应用程序登录 Google Play 时遇到问题 我补充道 编译 com google firebase firebase auth 11 4 2 和 编译 com google android gms play
  • Windows 任务管理器中的“转储文件”是什么?

    我知道在 Windows 中 您可以通过转到任务管理器 gt 进程 gt 右键单击进程来生成转储文件 什么是转储文件 我可以用 dmp 文件做什么 dmp 文件是Minidump 实时进程的快照 包含有关其当前状态的信息 包括内存 堆栈跟踪
  • 最大化 $digest 迭代

    我正在玩弄指令和 在此绑定fiddle 我收到以下错误 Uncaught Error 10 digest iterations reached Aborting Watchers fired in the last 5 iterations
  • @"some string" 在 Objective-C 中是什么意思?

    我刚刚开始 iphone 开发 遇到了一些使用 somestring 的示例代码 someLabel txt string of text 为什么字符串需要 我猜这是创建对象的某种快捷方式 它使用该字符串创建一个 NSString 对象 而
  • 当对等点不在 NAT 后面时,由于主机地址混淆,WebRTC 在现代浏览器中不起作用

    在对我的网络应用程序进行故障排除时 我发现草稿 mdns ice 候选者 这是关于使用 mDNS 混淆候选主机中的地址 我发现 当两个对等点 代理 L 代理 R 处于如下图 7 所示的拓扑时 WebRTC 对等点连接失败 因为代理 R 的主
  • AngularJS 在按钮单击时打开模式

    我正在尝试学习通过单击 AngularJS 中的按钮来打开模式对话框 但无法这样做 我检查了 chrome 控制台 但没有错误 另外 由于我正在学习 AngularJS 请建议当 chrome 控制台没有显示任何错误时该怎么做 这是我的代码
  • 在 Matlab 或 matplotlib 中根据法向量和点绘制平面

    如何从法向量和点在 matlab 或 matplotlib 中绘制平面 对于所有的复制 粘贴 这里是使用 matplotlib 的 Python 类似代码 import numpy as np import matplotlib pyplo
  • Qt:QAbstractItemModel 中的 setData 方法

    我是模型视图新手 我一直在关注本教程在检查文档的同时 我偶然发现了这个小细节 可以下载的教程代码hereQAbstractItemModel 类 此处为 QAbstractListModel 中有 setData 方法 其代码为 def s