我们应该更喜欢 Qt 的私有插槽而不是 public 插槽吗?

Should we prefer Qt's private slots over public slots?

Qt "private slots:" what is this?

AFAIK @Andrew 对上述问题的回答解决了这一点。 @borges 提到了重要的细节

When the method is called via signal/slot mechanism, the access specifiers are ignored. But slots are also "normal" methods. When you call them using the traditional way, the access specifiers are considered

所以原则上我倾向于将写槽作为私有的。并且 将它们标记为 public 当期望 also 在非 connect[=29] 中调用它们时=]上下文,我的意思是直接调用。

在其他作品中,这就像喜欢私人插槽一样。但是,我没有记录在 Qt 的文档中看到过这种心态。他们似乎到处都使用 public slots 。我错过了什么吗?

当我们进行多线程时,是否有任何变化,并且可能会在另一个线程中的对象中调用方法(槽)?

插槽是 class 界面的一部分,因此应该是 public。仅由于元系统工作方式的特殊性,旧的连接语法才有可能使用专用插槽。所以他们是副产品,而不是某些 first-class 公民需要长期支持 运行。

如果你有专用槽,你也不能使用新的连接语法(这是首选),因为你需要指向你无缘无故创建的成员函数的指针私人。

所以不,您不应该默认将插槽设为私有。仅当出现某些特定需求并说明您为何这样做时。