接收信号的 QML 元素失效了?

2024-01-11

我有类似以下的代码:

...
id: myComponent
signal updateState()
property variant modelList: []
Repeater {
    model: modelList
    MyButton {
        ...
        Connection {
            target: myComponent
            onUpdateState: {
                ...
            }
        }
    }
}

我为 modelList 分配一个值,然后发出 myComponent.updateState() 来更新中继器中的 MyButton 组件。此时我收到很多关于不存在属性的警告

似乎信号被传递到不再存在的 MyButton(因为当我更改 modelList 时转发器将重新运行)。

有没有办法避免这种情况,或者我应该忽略这些警告?


在破坏连接到 C++ 信号的 QML 组件时,我遇到了类似的问题。该问题通过添加一个处理程序来解决,该处理程序用于在组件被破坏时断开信号。在动态生成的组件中,您可以尝试手动连接信号,以便在销毁时手动断开它们。就我而言,代码如下所示:

MyComponent {
    Component.onCompleted: signal.connect(callback_function)
    Component.onDestruction: signal.disconnect(callback_function)

    function callback_function() {
        // process signal
    }
}

可能有一个更好的解决方案,不需要手动连接和断开信号,但这对我有用。如果您添加一个console.log("Destroying...") to the onDestruction您可以检查组件是否正在断开信号,从而实际上被销毁。

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

接收信号的 QML 元素失效了? 的相关文章

  • Qt Creator:如何区分 win32 和 win64

    我必须在 pro 文件中执行类似的操作 win32 LIBS L 3rdparty libusb win32 lib msvc llibusb else win64 LIBS L 3rdparty libusb win32 lib msvc
  • 加权 Voronoi 的 CGAL 2D APOLLONIUS 图 - 如何生成和获取面和顶点?

    我正在尝试根据阿波罗尼乌斯图生成加权沃罗诺伊 我正在使用 CGAL 库 我找不到如何从 apollonius 获取面和顶点的好例子 我有以下类型定义 typedef double NT typedef CGAL Cartesian lt N
  • Qt 文件对话框默认后缀不起作用

    我将以下代码用于 QtQuick Dialogs 1 3 和 Qt 5 10 0 下 filedialog 的新属性 我使用 Qt Creator 5 10 默认套件构建它 import QtQuick 2 10 import QtQuic
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

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

    使用菜单时QToolButton菜单显示在按钮的正下方 有没有办法在按钮的左侧 右侧显示菜单 我知道这个问题不久前已得到回答 但我想为此问题添加新答案 因为接受的答案不再有效 实际上 更改 QToolButton 上的菜单位置非常容易 您需
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 退出 Qt 程序的正确方法?

    我应该如何退出 Qt 程序 例如在加载数据文件时 发现文件损坏 并且用户需要退出该应用程序或重新启动数据文件 我是不是该 call exit EXIT FAILURE call QApplication quit call QCoreApp
  • Qt:测量事件处理时间

    我想测量我的应用程序中的哪些事件在主线程中需要很长时间才能执行 阻塞 GUI 或者至少是否有任何事件花费的时间超过 比如说 10 毫秒 显然 我对需要很长时间的任务使用线程和并发 但有时很难在其他线程中放入的内容和可以保留在 GUI 中的内
  • 在 MacOS 终端上运行 ffmpeg [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 MacOS 相当陌生 我发现使用终端来获取信息并不容易ffmpeg和我在 Window 上一样正常运行 我有 ffmpeg 二进制文件ffmpe
  • Qml 模块未找到 CPP 类注册与新的 QML_ELEMENT r

    我尝试使用 Qt5 15 0 和新宏 QML ELEMENT 在 QML 中注册我的自定义 CPP 类 但找不到该模块 Qt Creater 帮助文件描述了 QML ELEMENT 的步骤 我也检查了 Qt 手册 但没有幸福的结局 http
  • QT从QTableWidgetItem继承到Widget并覆盖'<'运算符

    我想要一个QTableWidget具有定制的某些单元QProgressBars 并且我希望能够对包含这些的列进行排序 我的定制QProgressBar继承自两者QProgressBar and QTableWidgetItem 并且我正在覆
  • Qt 5.6 测试版 Visual Studio 2015

    我已经安装了这个 http download qt io development releases qt 5 6 5 6 0 beta qt opensource windows x86 msvc2015 5 6 0 beta exe mi
  • 如何使用meta-toolchain-qt5构建Qt(带有QtWebEngine支持)?

    我正在尝试使用构建 Qtmeta toolchain qt5 但是当我通过这样做时poky glibc x86 64 meta toolchain qt5 cortexa7hf vfp vfpv4 neon toolchain 2 0 1
  • QSerialPort 中的 readAll() 不包括最后发送的响应

    我正在使用 Qt 来控制串行设备 如果我向串行设备发送命令 我会执行类似的操作serial gt write command r n 我制作了一个按钮 它将纯文本小部件内的文本更改为串行端口的响应 为了获得串口的响应 我使用serial g
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • QML 连接:不推荐使用连接中隐式定义的 onFoo 属性

    升级到 Qt 5 15 时收到以下错误消息 QML Connections Implicitly defined onFoo properties in Connections are deprecated Use this syntax
  • 如何向同一个 QMenu 添加多个 QAction?

    我正在尝试实现 Qt 菜单自定义 并且我提供了一个功能来添加相同的功能QAction在同一个人民币上下文菜单中多次 但是当我尝试这样做时 myMenu gt addAction myAction myMenu gt addAction my
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 如何消除 QTableWidget 中的空白?

    How do I get rid of the whitespace in my application 我想摆脱 QTableWidget 中的空白 蓝色箭头 我该怎么做 这是我的应用程序的代码 gridLayout QGridLayou

随机推荐

  • AppleScript:将安装的文件夹添加到 Finder 侧边栏?

    我有一个简单的 Apple 脚本来安装文件夹 mount volume smb machineip folder 它在启动时运行 因为 Mac OS X 10 5 5 没有像 Windows 那样的映射驱动器的概念 但剧本并没有达到我想要的
  • 如何在 MongoDB 中对集合记录内的数组进行排序?

    我有一组学生 每个学生都有如下所示的记录 我想对它们进行排序scores数组按降序排列score 这个咒语在 mongo shell 上是什么样子的 gt db students find id 1 pretty id 1 name Aur
  • 动态变量 Jekyll Liquid

    我想在 jekyll Liquid 安装中使用动态变量 我想使用动态变量动态访问 config yml 文件 名称 最好用一个例子来解释 Page layout default title title homepage 默认布局 site
  • 如何用Java更新MongoDb数据库?

    我是 MongoDb 的新手 有很多关于在 2 x 版本中更新集合的示例 但我找不到任何关于 3 x 版本的来源 Java代码 MongoClient mongoClient new MongoClient localhost 27017
  • 调整大小时避免在两个单词之间断行[重复]

    这个问题在这里已经有答案了 我有一个字符串 我需要它不要破坏不同行中的两个特定单词 例子 Ask for it it when contracting until 2016 09 30 with T 2 Rate 当我调整窗口大小并使其变小
  • Firebase 身份验证在应用删除后仍然存在? [复制]

    这个问题在这里已经有答案了 我刚刚发布了一个应用程序 它使用 Firebase 身份验证和 Gmail 来对用户进行身份验证 我注意到 如果有人登录然后删除该应用程序 如果他们重新下载该应用程序 他们仍然会使用 Firebase 登录 在我
  • 以编程方式重新启动 React Native 应用程序

    是否可以在不编写任何本机代码的情况下以编程方式重新启动 React Native 应用程序 例如 我从答案中知道这个问题 https stackoverflow com questions 15564614 how to restart a
  • 组织捕获和计时行为不当

    我相信你们中的一些人可能已经 从我最近提出的一系列问题中 了解到我正在 emacs 上设置组织模式并浏览 Brent Hansen 令人印象深刻的组织set up http doc norang ca org mode html 他是一个计
  • 在 for 循环中使用 ggplot2 绘制多个图

    我看了这些问题 1 https stackoverflow com questions 3824412 ggplot2 use options for multiple plots and 2 https stackoverflow com
  • UITableView 部分边框

    有没有办法在 UITableView 部分 组样式 上设置边框 我的意思并不是要更改该部分中单元格的边框 我想要整个部分周围有一个边框 像这样 Note 虽然上图仅显示了单个部分的一部分 但所讨论的表实际上有多个部分 每个部分的长度都是可变
  • 使用 google-api-php-client 下载文件

    我在尝试使用位于以下位置的 php 客户端从 Google Cloud Storage 下载文件时遇到问题https code google com p google api php client https code google com
  • Active Admin 中的自定义表单

    我正在 Active Admin 0 5 中创建自定义表单 我已经注册了一个页面并通过 DSL 创建了一个表单 ActiveAdmin register page Planning namespace gt pos admin do con
  • 如何使用html和css绘制虚线

    如何使用 html 和 css 绘制虚线 如下所示 不是虚线 可以使用这个边框 1px虚线 但需要增加破折号的长度尺寸 而不是宽度 Use repeating linear gradient https developer mozilla
  • 电话软件开发语言

    是否存在通用的手机开发语言 我的意思是 例如 php 或 java 或其他 编辑 我们必须开发一些电话应用程序 并且我们正在寻找不同设备 黑莓 iPhone 摩托罗拉等 中最好的可重用语言 Java 已经非常接近了 但它还远未达到通用性 i
  • 我可以在 Visual Basic 中使用 C++ 函数吗?

    我对编程有点陌生 但我已经制作了一个非常好的库来计算数学问题 例如二次方程和许多其他问题 现在我遇到了一个朋友 他正在用 VB 进行一些编程 我们在想是否可以将我的函数从 C 导入到他的代码中 以便他可以在需要时调用它们 这样我们就可以制作
  • 有没有办法删除逻辑应用运行历史记录/日志?

    有没有办法从逻辑应用中删除所有运行历史记录日志 我知道现在正在测试 日志保留时间 的预览 但删除所有日志的最频繁时间是每周一次 我需要能够更频繁地进行此操作 在本例中是每三天一次 还有其他方法可以删除逻辑应用日志 历史记录吗 EDIT 查看
  • NodeJS 模块安装

    我正在尝试在无法访问互联网的计算机上安装 NodeJS 服务器 我复制了 exe 并执行了它 但现在我需要安装几个模块 所以我的问题是 我可以简单地从我的电脑复制模块吗 或者我必须将服务器连接到互联网并使用 npm 吗 编辑 我已经将所有必
  • Java集群中如何最好地进行文件锁定

    我有一个在 JBoss 上运行的服务器集群 我需要以安全的方式更新文件 具体来说 我需要 锁定文件 A 如果它已经被锁定 则以安全的方式阻塞 这样如果 JVM 突然死机 就不会出现悬空锁 30秒的超时就可以了 读取文件A 改变内容 将文件写
  • t 作为 R 中全局变量的名称:不可能吗?

    我想使用 t 作为 R 中全局变量的名称 但它不允许我这样做 sq1 function t lt lt 7 我收到以下错误 Error in sq1 cannot change value of locked binding for t 我
  • 接收信号的 QML 元素失效了?

    我有类似以下的代码 id myComponent signal updateState property variant modelList Repeater model modelList MyButton Connection targ