Qt中的接口隔离

4
我总是尝试应用S.O.L.I.D原则,我非常喜欢Qt工具包,但我发现自己一直在与单继承规则搏斗。
如果您使用多重继承,则moc会假定第一个继承的类是QObject的子类。此外,请确保只有第一个继承的类是QObject。
如何将QObject规则的单一继承和接口隔离原则结合起来?我想使用信号和插槽定义接口,但我不被允许这样做。
如何解决这个问题?
2个回答

5
记住,信号和槽只是具有特殊行为的函数。因此,您可以使用它们来创建接口。
有关完整过程的详细描述和复杂情况的完整解决方案,请参见Qt Quarterly#15

在链接的文章中,执行了一个 qobject_cast 到接口,但是该接口不是 QObject... 这应该改用 dynamic_cast 吗? - Joris Timmermans

1

我认为你不能轻易地通过Qt的信号/槽机制来解决这个问题。你可以尝试查看boost::signals或者sigc库,它们在信号和槽的放置位置上都更加灵活。请注意,使用这两个库和Qt的signalsslots宏可能会导致命名空间冲突。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接