假设我有一个类似这样的类:
class Something : QObject {
Q_PROPERTY(int something READ getSomething NOTIFY somethingChanged)
// ...
signals:
void somethingChanged();
}
根据文档,将somethingChanged
声明为void somethingChanged()
和void somethingChanged(int)
(请注意参数)均有效。 为什么我要以另一种方式做到这一点?
答案 0 :(得分:2)
发出该值允许您使用该值,而无需引用它所属的对象。这是通常在C ++ API中完成的事情,这使您无需手动保持对对象的引用,以便您可以在更改通知时读取值。请注意,即使这样,您也可以使用QObject::sender()
在必要时查找发件人对象,但发布值更为直接。
在QML中,大多数时候最终使用的是绑定,这些绑定非常快速且功能强大,并且涉及对对象的引用,并且更改通知会导致引用属性的绑定表达式自动重新评估。因此,没有必要发出实际值。
没有什么能阻止你拥有两全其美的优势。发出新值的通知信号似乎与QML绑定一起正常工作。因此,如果由于某种原因你需要发出一个值,不要回避它,它不会危及QML的兼容性。