gpt4 book ai didi

c++ - 如何构造信号/槽?

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:26 26 4
gpt4 key购买 nike

我正在使用 Qt 创建一个 UI,有两个元素可能存在也可能不存在。此外,他们的 parent 也是不同的元素。但是,一个会影响另一个。

我应该如何以最佳方式构造信号/槽(或者我什至不应该使用该模式)?

想到的方法似乎都是 hack:

  • 在所有父级中创建一个信号/插槽并向上传递然后向下传递信号
  • 在两者最近的公共(public)父级中创建一个信号/槽,然后让子级将它们的信号/槽连接到父级的
  • 在创建一个时导航另一个的结构以获取元素,然后直接连接信号/槽。非常感谢此处的任何指导。

编辑:“present”表示有一个按钮,用户可以按下该按钮创建一个元素并将其添加到布局中。因此,根据按钮按下的组合,元素可能存在或不存在。

“影响”意味着它改变了它的状态。例如,在别处有一个项目列表和一个向列表中添加元素的按钮。

例如,想象一个包含待办事项列表的选项卡式 Pane 。选项卡式 Pane 中没有一个按钮,用于将项目添加到列表中。选项卡式 Pane 不会创建 Pane 的所有元素。它只创建可见 Pane 的元素,并在 Pane 关闭时删除它们。因此,该列表可能存在也可能不存在。

最佳答案

UI 元素是 QWidgets。所有 QWidgets 都是 QObjects。任何 QObject 的信号都可以连接到任何其他对象的槽。 父子关系的层次结构完全无关紧要

您似乎将信号槽连接与事件混淆了,如果它们仍然被给定对象忽略,那么实际上可以向上传递对象层次结构。

同样值得注意的是,尽管 QObjects 被破坏,信号槽连接是安全的。当具有连接信号或槽的对象被销毁时,连接将被安全地断开。 您唯一不能做的就是删除槽中的发送者或接收者对象 - 请改用 object->deleteLater()

关于c++ - 如何构造信号/槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19014744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com