如何使用索引访问ListView中的委托属性

2024-02-24

我想访问委托属性ListView。我尝试过contentItem但有时是undefined.

这是我的代码:

ListModel{
            id: modeldata
            ListElement{
                name:"don"
                rank:1
            }
            ListElement{
                name:"shan"
                rank:2
            }
            ListElement{
                name:"james"
                rank:3
            }
            ListElement{
                name:"jeggu"
                rank:4
            }
        }
        Component{
            id: delegateitem
            Row {
                property int count: rank
                Rectangle{
                    width: 100
                    height: 50
                    Text{
                        anchors.centerIn: parent
                        text: name
                    }
                }
            }
        }
        ListView{
            id: listview
            focus: true
            anchors.fill: parent
            model: modeldata
            delegate: delegateitem
            onCurrentIndexChanged: {
        console.log("position",currentIndex)
        console.log("property",contentItem.children[currentIndex].count);
            }
        }

位置 1 处输出无效问题

qml: position 0
qml: property 1
qml: position 1
qml: property undefined
qml: position 2
qml: property 2
qml: position 3
qml: property 3

@Teimpz 并没有很好地解释它。特别是因为有一堆 qt 项目和 ubuntu touch qml 示例和用例,您可以使用 javascript 管理动态创建的列表元素,这就是为什么它们具有 javascript 方法和属性

在 QML 中,父级概念多于子级概念,这在 html 中很常见。在较大的项目中,建议这样做(正如您也可以在 qt 示例和文档中看到的那样)http://doc.qt.io/qt-5/qtqml-javascript-expressions.html#functions-in-imported-javascript-files http://doc.qt.io/qt-5/qtqml-javascript-expressions.html#functions-in-imported-javascript-files)将 js 逻辑与 qml 元素分开,这样您就可以从外部访问和管理元素,而不是用 js 逻辑污染您的 qml 元素,但不是以查找子元素的方式,而是公开您需要的子元素。

在你的情况下你应该只使用currentItem,与使用 currentIndex 相同,所以currentItem.count会给你你所需要的。 如果您根本不需要当前项目,您可以直接从模型访问元素:

modelData.get(currentIndex).count, or listview.model.get(currentIndex).count

至于@Teimpz 提到的黑客行为,这也是一个不好的例子。当您有更复杂的需求并希望在委托中使用特定元素时,每个委托都有 ListView.isCurrentItem 属性,您可以附加和检查该属性。这意味着您可以将属性 var myTargetItem 添加到 listview,并将其从子元素设置为您想要的任何元素(如果该委托是当前的)http://doc.qt.io/qt-5/qml-qtquick-listview.html#isCurrentItem-attached-prop http://doc.qt.io/qt-5/qml-qtquick-listview.html#isCurrentItem-attached-prop

当然,您可以对任何类型的事件执行此操作,也许是 activeFocus,因此您只能引用 activeFocus 项目。

这再次使您能够仅公开想要的元素,而无需任何高级逻辑或删除。将其与信号相结合,您可以创建非常复杂但干净的界面,而无需搜索子项。

所以最后可能不太好但仍然比搜索元素更好的是添加property int currentItemCount: 0到列表视图。然后在委托(行元素)中添加property bool isCurrentItem: ListView.isCurrentItem所以你得到onIsCurrentItemChanged在委托内部发出信号,您可以在其中执行以下操作: onIsCurrentItemChanged: if(isCurrentItem) listview.currentItemCount = count 所以你总是设置当前的项目计数

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

如何使用索引访问ListView中的委托属性 的相关文章

  • 无法在 Qt5 应用程序中加载 qca-ossl

    我决定将我的应用程序从 Qt4 迁移到 Qt5 在 Qt4 中 我将 QCA 与 QCA OSSL 一起使用 没有任何问题 但现在 OSSL 插件不想加载 我已经在 Qt5 下从 git anongit kde org qca git 编译
  • 悬停时突出显示自定义 QWidgetAction

    我的应用程序有一个QMenuBar与一些QMenus 其中每个都有多个QActions 和子QMenus 大部分的QAction 项目是衍生品QWidgetAction并重新实施QWidgetAction createWidget方法 通常
  • 设置Loader项目属性

    In the context https stackoverflow com questions 33513546 delegate folderlistmodel in tableview文件管理器 我有一个TableView组件保存在文
  • 如何在QML中设置弹出菜单位置

    我想修复 QML 中弹出菜单的位置 当我单击设置按钮时 我希望弹出菜单将显示在固定位置 我用了一天的时间就做到了 但是做不到 我怎样才能在 QML 中做到这一点 另外 我想更改菜单项的大小 宽度和高度 希望您的帮助 这取决于QtQuick
  • 如何使用 Linux 帧缓冲区旋转 Qt5 应用程序?

    我有一个直接在 Linux 帧缓冲区 无 x Windows 上运行的嵌入式 Linux 应用程序 现在我们必须将显示屏物理旋转 180 度 如何让我的 Qt 应用程序旋转 使其不会出现颠倒 我看到参考使用以下选项 platform lin
  • 设置 ItemIsMovable 标志时,子项在 QGraphicsView 中不可移动

    要调整项目中的项目QGraphicsView http qt project org doc qt 5 0 qtwidgets qgraphicsview html 我将表示顶点的子项放到要移动的项上 使用构造函数中建立的父子关系 就是下图
  • 如何在 QML 中使用 Font Awesome

    有谁知道如何在 QML 中使用 Font Awesome 吗 我找不到任何文档或任何信息如何在 QML 中使用 Font Awesome 我喜欢做的是使用fontello http fontello com 创建最小的图标集 而不是从 Fo
  • Qt 5.4/Qml:防止绑定循环

    我有一个全局单例 设置 它保存应用程序设置 当我尝试运行以下代码时 我得到一个QML CheckBox Binding loop detected for property checked CheckBox checked Settings
  • Qt QML ComboBox 覆盖滚轮事件

    有没有办法覆盖 ComboBox MouseArea 以忽略滚轮事件而不是更改当前索引 ComboBox 本身没有选项可以更改滚轮焦点行为 到目前为止 我尝试使用如下代码覆盖 CB MouseArea 的 onWheel ComboBox
  • 无法隐藏 QMenu 对象 QMenu::setVisible()?

    我已经建立了一个QMenu MainMenu在我的上面MainWindow在我的应用程序中 大家都习惯了 我有以下QMenu主菜单 文件 编辑 SuperHeavyExpertMenus 设置 帮助 我想隐藏子树SuperHeaverExp
  • PySide2/QML 填充 Gridview 模型/委托并为其设置动画

    我是 QML 的新手 正在寻求以下几点帮助 如何基于 TextField 输入 如 Regex 通过 PySide2 过滤 Gridview 模型中的 QAbstractListModel 数据 标题 如何在鼠标悬停时为 Gridview
  • 我的 QSqlQueryModel 不在列表视图中显示数据

    我正在玩 QSqlQueryModel 但我现在完全陷入困境 我一整天都在寻找解决方案 但到目前为止还没有运气 我所做的工作是它从我的 sqlite 数据库中提取数据 但由于某种原因我无法在列表视图中显示它 我的角色名似乎不存在 对于我从数
  • QLineEdit:显示处理后的文本,而不是输入的文本,但保留它(自定义回显模式)

    我想要一个QLineEdit不显示输入的文本 而是显示经过处理的版本 同时保留原始文本并在通过请求时返回它text 就像密码回显模式一样 但我不希望每个字符都被屏蔽 我想虚拟化空间 例如什么时候some text with spaces i
  • 从 QML 实例化 C++ 对象会产生巨大的内存使用开销

    实例化一个QObjectC 堆中的派生类为每个对象提供了大约 160 个字节 通过注册相同的对象qmlRegisterType 用于从 QML 创建并通过以下方式动态创建对象createObject 每个对象给我 2000 多个字节 这是完
  • 当 QML 对象不可见时防止 QML 属性绑定?

    我正在开发一个具有大量属性绑定的 QML 应用程序 数百个对象被跟踪并以不同的形式显示 例如 Qt3D QCanvas 当我在应用程序的单独页面上时 x y 位置和相对大小的属性绑定仍在发生 我怎样才能阻止他们 我知道我可以根据属性是否可视
  • Qt 5.0.1:应用程序不会在 Qt 创建者之外执行

    我正在尝试运行程序 TransitTalker exe 这是我从 qt 编译的代码 如下图所示 https www dropbox com s ypgklrm4uschri5 filecontents png https www dropb
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 禁用 QML Slider 的鼠标滚轮

    我希望能够滚动Flickable使用鼠标滚轮 或触摸板上的两根手指 不改变Sliders它可能包含 示例代码及结果应用 import QtQuick 2 7 import QtQuick Window 2 2 import QtQuick
  • 在 Qt5 中,是否需要 Q_INVOKABLE 来从 QML 调用公共 QObject 函数?

    我刚刚意识到我可以调用暴露于 QML 的对象的几乎任何函数 现在我对 Q INVOKABLE 很好奇 Qt5docs http doc qt io qt 5 qtqml cppintegration exposecppattributes
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

    几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本 我就是不明白我做错了什么 System Windows 7 64 位 Visual Studio 2013 仍安装 Visual Studio 2012

随机推荐

  • 如何确保curl 使用openssl,而不是nss?

    是否可以通过配置来保证parameter http curl haxx se docs manpage html that curl uses OpenSSL http www openssl org and not NSS http ww
  • 在 codeigniter 中启用 $_GET

    我一直在试图弄清楚如何在 CI 中启用 GET 看起来框架故意破坏了 GET 数组 并且启用它需要对核心类进行认真的修改 谁能说出这是为什么 以及如何克服它 请注意 我希望保持 URI 解析和路由的方式不变 只需让 GET 也可用即可 将以
  • Django - 使用 templatetags 渲染许多模板非常慢

    假设 我有一个带有照片库的页面 每个缩略图都有例如照片 国家 地区 作者等 我使用模板标签 加载指定的模板 渲染这些项目 小部件 由于 DRY 我在页面上的不同位置单独使用这些项目 小部件 所以会这样 而且速度非常慢 我使用 django
  • 如何使按钮可重复使用?

    我对编程世界还比较陌生 我对 HTML 和 CSS 有扎实的了解 最近又学习了 JavaScript 我正在开发一系列文本生成器作为学校项目 我的目标是能够在网站上单击一个按钮 并让计算机在每次单击该按钮时吐出随机文本 然而 虽然我对 HT
  • 在 httpContextAccessor.HttpContext 上返回 null

    我们重写 SaveChangesAsync 以自动更新 DateCreated CreatedBy LastDateModified 和 LastModifiedBy 对于CreatedBy和LastModifiedBt 我们需要Ident
  • 获取 Android Google Analytics 引荐来源网址标签

    我们计划使用 Google Analytics 来跟踪通过 Android Market 到我们的应用程序的广告点击推荐 根据谷歌文档 http code google com apis analytics docs mobile andr
  • 带有自定义标头的 Resttemplate GET 请求

    我需要发送带有标头的 GET 请求 Content Type application camiant msr v2 0 xml 我期望来自服务器的 XML 响应 我用 Postman 测试了请求和响应 一切都很好 但是当我尝试在春天这样做时
  • 密码哈希 PHP 7 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前正在学习 PHP 并且一直在论坛中查找有关如何最好地在 PHP 中对密码进行哈希处理的最新想法 任何人都可以建议目前最好使用的密码哈希方法
  • JSON 嵌套在 POJO 中

    我有一个 POJO 类 public class D private JSONObject profileData public JSONObject getProfileData return profileData public voi
  • 如何在 Eclipse Juno 中打开 OSGi 控制台?

    eclipse console 上面的命令在不同的窗口中打开 OSGi 控制台和 Eclipse IDE 是否有任何选项可以将 OSGi 控制台引入 Eclipse 的控制台视图中 您只需选择 主机 OSGi 控制台 http archiv
  • 使用 JUnit 进行单元测试时如何处理异常?

    如果一个方法抛出异常 如何编写测试用例来验证该方法实际上抛出了预期的异常 在最新版本的 JUnit 中 它是这样工作的 import org junit Rule import org junit Test import org junit
  • 迭代多维关联数组 PHP 中的每个键和值

    我刚刚了解了键 值对 我尝试寻找现有的答案 并尝试了解有关键 值对和关联数组的知识 尽管这有点太耗时了 我很难弄清楚如何迭代这个多维关联数组而不出现任何错误 arr array test1 gt array testing 1 1 gt a
  • 使用索引和列作为 X、Y 以及值作为 Z 将 pandas DataFrame 转换为 3D 图表?

    我正在尝试使用 Pandas Dataframe 创建 3d 波动性表面 我觉得我拥有所有信息 但我不确定如何从中创建 3d 图表 我读过的每本指南似乎都使用 3 个独立的数组 但我觉得我拥有的数据应该是可图形化的 我当前的数据框如下所示
  • graphql中resolver函数的不同实现说明

    我一直在阅读 graphQL 文档 发现他们以两种方式解释了 graphql 服务器的实现 一种使用 graphql yoga 这是一个功能齐全的 graphql 服务器 另一种是使用 graphql express graphql 和ex
  • 将 War 文件部署到 Azure [重复]

    这个问题在这里已经有答案了 我正在尝试将 Web 服务的 War 文件上传到运行 tomcat 8 的 Azure 我在 onedrive 上的相关 webapps 文件夹中有 war 文件 但是部署始终失败 令人沮丧的是它没有错误消息 我
  • @导入“基础”;基础错误5

    我在我的项目中使用foundation5 并完成了其网站和中定义的所有设置http thesassway com http thesassway com1 http thesassway com但是当我使用 import foundatio
  • Nodejs:迭代 req.files 属性

    我对 Nodejs 很陌生 有时会遇到困难 例如 我正在通过 AJAX 发送图像文件并在我的应用程序中成功接收它 console log req files 打印 img 1351078491675 size 354683 path tmp
  • Amazon AWS S3 目录结构效率

    我脑子里闪过一个简单的效率问题 我创建了一个 PHP 代码 用于将文件夹中的所有文件上传到 Amazon S3 上的存储桶 我的代码也能够以子文件的形式上传文件 而不会丢失其结构 基本上 用户必须登录我的网站 然后根据用户的帐户名 他们可以
  • 从 php 运行蹩脚

    我正在尝试从 php 脚本运行蹩脚 我已经尝试过这些 但没有运气 我没有得到任何回报 有任何想法吗 system lame returnarr system lame help returnarr exec lame returnarr p
  • 如何使用索引访问ListView中的委托属性

    我想访问委托属性ListView 我尝试过contentItem但有时是undefined 这是我的代码 ListModel id modeldata ListElement name don rank 1 ListElement name