【发布时间】:2011-02-03 04:23:40
【问题描述】:
假设我有一个MyWidget,其中包含一个MySubWidget,例如包含文本字段或其他内容的自定义小部件。我希望其他类能够连接到包含的 MySubWidget 实例所公开的信号和插槽。是传统的方法吗:
- 通过
MyWidget中的subWidget()方法公开指向MySubWidget实例的指针 - 在
MyWidget类中复制MySubWidget的信号和槽,并编写“转发”代码 - 还有别的吗?
选择 1 似乎是最少的代码,但它也打破了封装,因为现在其他类知道 MyWidget 包含的小部件是什么,并且可能依赖于它们的功能。
选择 2 似乎保持封装,但它有很多看似冗余且可能令人费解的代码,有点搞砸了整个信号和插槽系统的优雅。
在这种情况下通常会怎么做?
【问题讨论】:
标签: c++ qt signals-slots