1

我正在使用 Qt 创建一个 UI,并且有两个元素可能存在也可能不存在。此外,他们的父母也是不同的元素。然而,一个影响另一个。

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

想到的方法似乎都像黑客:

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

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

“影响”意味着它改变了它的状态。例如,有一个项目列表和一个在其他地方添加一个元素到列表的按钮。

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

4

1 回答 1

1

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

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

还值得注意的是,尽管 QObjects 被破坏,信号槽连接是安全的。当具有连接信号或插槽的对象被破坏时,连接被安全地拆除。您唯一不能做的是删除插槽内的发送者或接收者对象-object->deleteLater()改为使用。

于 2013-09-26T02:14:44.253 回答