我们应该更喜欢 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 公民需要长期支持 运行。
如果你有专用槽,你也不能使用新的连接语法(这是首选),因为你需要指向你无缘无故创建的成员函数的指针私人。
所以不,您不应该默认将插槽设为私有。仅当出现某些特定需求并说明您为何这样做时。
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 公民需要长期支持 运行。
如果你有专用槽,你也不能使用新的连接语法(这是首选),因为你需要指向你无缘无故创建的成员函数的指针私人。
所以不,您不应该默认将插槽设为私有。仅当出现某些特定需求并说明您为何这样做时。