- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html
class Message : public QObject
{
Q_OBJECT
Q_PROPERTY(QString author READ author WRITE setAuthor NOTIFY authorChanged)
public:
void setAuthor(const QString &a) {
if (a != m_author) {
m_author = a;
emit authorChanged();
}
}
QString author() const {
return m_author;
}
signals:
void authorChanged();
private:
QString m_author;
};
他们写了emit authorChanged();
。
我想知道这个信号的插槽在哪里?
当发出 authorChanged()
信号时,哪些代码会被更改?
最佳答案
如果您在 C++ 中使用此属性,则必须自己提供和连接插槽,但如果您阅读其余部分,则在 Qml 中:
In the above example, the associated NOTIFY signal for the author property is authorChanged, as specified in the Q_PROPERTY() macro call. This means that whenever the signal is emitted — as it is when the author changes in Message::setAuthor() — this notifies the QML engine that any bindings involving the author property must be updated, and in turn, the engine will update the text property by calling Message::author() again.
它表示宏的 NOTIFY 部分通知 QML 引擎它必须连接到此信号并更新涉及此属性的所有绑定(bind)。
Q_PROPERTY 只是公开属性,但实际工作发生在 setAuthor 中,它也发出信号。如果设置了属性,QML 也会使用此方法。
更新:
问:我想知道这个信号的插槽在哪里?
QML 中的插槽位于 QML 引擎中。
问:发出 authorChanged() 信号时,哪些代码会发生变化?
QML 更新涉及指定属性的所有绑定(bind)。
关于c++ - 如何捕获通过 Q_PROPERTY 发出的信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47261276/
在此: Q_PROPERTY(QString datastring READ showdata() NOTIFY datastringChanged) 是datastringChanged用于在 QM
我正在使用 Q_PROPERTY s 在我的项目中,我试图找出向这些属性添加一些属性的最佳方法( like min and max value )。 看起来没有任何地方可以在属性本身上存储这些属性..
我的目标是实现更多的代码重用,同时保持冗长。 考虑以下示例代码: // qdot@defixio /tmp/test4 $ cat test.h #include class Foo : publi
我正在将 Q_PROPERTY 与 QML 一起使用。我的代码是: using namespace std; typedef QString lyricsDownloaderString; // th
考虑这些类: Class A : public QObject { ... Q_PROPERTY(int value READ value WRITE setValue NOTIFY
考虑这些类: Class A : public QObject { ... Q_PROPERTY(int value READ value WRITE setValue NOTIFY
我正在尝试将抽象类的实例用作我的一个扩展 QQuickItems 中的属性。我有一个基础类(class),像这样: class VizFactory : public QQuickItem {
我有一个 Configuration,其中包含一些关于文件位置的基本信息,例如下载、安装、图片、音乐、文档等位置。这些目前使用 Q_PROPERTY 暴露给 QML。它们都有自己的访问器: Q_PRO
我是 QT 属性系统的新手,我想了解为什么如果我以一种方式注册和使用属性,它可以工作,但以另一种方式失败。 我有两个类( A 和 B )都继承自 QObject .类 B包含类 A 的几个实例我想注册
我有两个类,TestA 和 TestB。 TestA 扩展了 QObject。我用一些 Q_PROPERTY 设置了它。 Q_PROPERTY(QString a_string READ getStr
我是 Qt 和 C++ 的新手,但长期使用 Delphi 程序员。 我有一个简单的类,我正在尝试将属性添加到: class Rectangle { Q_PROPERTY(int width R
我有这个属性: Q_PROPERTY(int _a READ a WRITE setA NOTIFY aChanged) 我只知道属性的名称 _a。我想获取方法 setA 的索引。 最佳答案 查看 Q
http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html class Message : public QObject {
如何将 Q_PROPERTY 宏放入另一个辅助宏中? #define SimpleAllinOne(member, _type) \ public: \ void Set##member(_t
我习惯用参数编写我的“propertyChanged”signal,这样接收端就不需要调用Q_PROPERTY的READ 功能显式。 我这样做是为了清楚起见,并假设在 QML 数据绑定(bind)情况
TL;DR:如何为与使用 Q_PROPERTY 声明的属性同名的访问器生成 doxygen 文档? Qt 的 property system使得在给定属性上使用 Qt 的元对象系统成为可能: // e
我真的想不通为什么我需要它,一直在阅读: http://doc.qt.io/qt-4.8/properties.html#requirements-for-declaring-properties 还
众所周知,继承的信号不能用作Q_PROPERTY NOTIFYer ( https://bugreports.qt.io/browse/QTBUG-7684 )。作为一种解决方法,我在派生类中使用了一
我有一个非常简单的类,它有两个属性;键和值: KeyValue.h: class KeyValue : public QObject { Q_OBJECT Q_PROPERTY(QString
问题 我正在制作一个使用 Q_OBJECT 和 Q_PROPERTY 从脚本访问一些对象的项目。我有两个问题: 使使用前向声明的类可编写脚本 返回一个属性作为指针 说明 1. 为什么要提前申报? 类
我是一名优秀的程序员,十分优秀!