假设我有一个MyWidget
包含一个MySubWidget
,例如一个包含文本字段或其他内容的自定义小部件。我希望其他类能够连接到包含的MySubWidget
实例公开的信号和插槽。是执行此操作的常规方法:
- 通过方法暴露一个指向
MySubWidget
实例的指针subWidget()
MyWidget
- 复制类中的信号和槽
MySubWidget
并MyWidget
编写“转发”代码 - 还有什么?
选择 1 似乎是最少的代码,但它也打破了封装,因为现在其他类知道包含的小部件是什么,MyWidget
并且可能依赖于它们的功能。
选择 2 看起来像是保持封装,但它有很多看似冗余且可能令人费解的代码,这会破坏整个信号和插槽系统的优雅。
在这种情况下通常会怎么做?