gpt4 book ai didi

qt - Qt5 中仍然需要 "public slots:"部分吗?

转载 作者:行者123 更新时间:2023-12-03 16:05:38 25 4
gpt4 key购买 nike

关于 Qt5 中新的信号/槽语法的一个简单问题:

  • Q_OBJECT 是否还有好处? -派生类具有public slots:部分声明?

  • 注意:使用新语法,您可以将信号连接到 任意 类的公共(public)函数或直接实现 C++11 lambda(也可以自己调用一些成员函数)。

    Qt's new signal/slot syntax

    最佳答案

    虽然 vahancho 和 TheDarkKnight 的回答是有效的:slots连接不需要,但它使意图更清晰并允许自省(introspection)。我想我应该列出一些你确实需要的用例 slots .

    首先请注意,您可以使用slots , Q_SLOTS , Q_SLOT Q_INVOKABLE 使元对象(内省(introspection))系统知道函数。 Q_INVOKABLE优点是可以在构造函数上使用。

    以下是没有特定顺序的用例:

  • 让你的代码与 Qt 4 一起工作。即使没有维护 Qt 4,我认为一些大公司仍在使用它,并且使库与 Qt 5 和 Qt 4 一起工作相当容易。
  • 使函数在 QML(和 Qt Quick)中可用
  • 使函数在 javascript 中可用(Qt Script、Qt WebEngine 等)
  • 使用 QMetaObject::invokeMethod() 使函数可调用.接受仿函数的重载将在 Qt 5.10 中可用。
  • 使用 QMetaObject::connectSlotsByName() .注意这个函数should not be used因为它可能会受到对象名称冲突的影响,但它仍然是 Qt 小部件设计器连接它创建的插槽的方式。
  • 使用 QMetaObject::newInstance() 使您的类可实例化.
  • 以及需要运行时自省(introspection)的所有其他用例
  • 关于qt - Qt5 中仍然需要 "public slots:"部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47196736/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com