如何构建信号/插槽
How to structure signals/slots?
我正在使用Qt创建一个UI,有两个元素可能存在,也可能不存在。此外,他们的父母也是不同的元素。但是,一个影响另一个。
我应该如何以最佳方式构建信号/插槽(或者我甚至不应该使用该模式(?
想到的方法似乎都是黑客:
- 在所有父级中创建一个信号/插槽,然后向上传递然后向下传递信号
- 在两者最接近的共同父项中创建一个信号/插槽,然后让子项将其信号/插槽连接到父项的信号/插槽
- 在创建一个时,导航另一个的结构以获取元素,然后直接连接信号/插槽。非常感谢此处的任何指导。
编辑:"呈现"意味着用户可以按下一个按钮来创建元素并将其添加到布局中。因此,根据按钮按下的组合,元素可能存在或不存在。
"影响"意味着它改变了它的状态。 例如,有一个项目列表和其他地方的按钮,用于将元素添加到列表中。
例如,假设一个包含待办事项列表的选项卡式窗格。选项卡式窗格中没有一个按钮,用于将项目添加到列表中。选项卡式窗格不会创建窗格的所有元素。它仅创建可见窗格的元素,并在窗格切换时将其删除。因此,该列表可能存在,也可能不存在。
UI 元素是 QWidgets。所有的QWidgets都是QObjects。任何QObject的信号都可以连接到任何其他对象的插槽。父子关系的层次结构完全无关紧要。
您似乎将信号时隙连接与事件混淆了,如果给定对象仍然忽略它们,则实际上可以向对象层次结构传递。
还值得注意的是,尽管QObjects被破坏,但信号槽连接是安全的。当具有连接信号或插槽的物体被破坏时,连接将被安全地拆除。您唯一不能做的是删除插槽中的发送方或接收方对象 - 改用object->deleteLater()
。
相关文章:
- 控制带有信号/插槽的Qt QML滑动视图
- Qt 信号/插槽问题
- Qt moveToThread,带有参数的信号/插槽
- moc 文件中缺少信号插槽
- 文档在哪里说明如果参数不是从末端删除参数,则无法从QT信号插槽连接中删除参数?
- 信号/插槽多线程 Qt
- 通过排队的QT信号插槽连接发送QSHAREDPOINTERS的QVECTOR
- Qimage没有通过信号插槽QT
- 使用 Qt5 的新信号/插槽实现向滑块发出信号
- 一个类中的QT信号/插槽,但从不同的线程发出
- 信号/插槽基类多继承
- 在QT C 中使用QMOVIE和信号/插槽之间在GIF中导航
- 在 for 循环中使用 lambda 函数连接信号插槽
- 不同类别的 2 个对象之间的信号/插槽
- 如何正确使用qt的信号/插槽系统
- Qt信号插槽视觉工作室:似乎未连接
- QACTION信号插槽中的无形UI
- Qt-连接触发动作中的信号/插槽
- Qt 信号插槽类范围类型
- 信号/插槽 Qt5 C++