Qt函数体中的Q_REVISION
是什么?
我在qt源代码中看到了很多次。
我查看了Qt文档,发现this文档说:
这是什么意思?在哪里可以使用此Q_REVISION
最佳答案
到目前为止,它仅由QtQml使用,当您需要在QML中使用C++对象时,必须使用此语法进行注册。
qmlRegisterType<Foo>("MyModule", 1, 0, "Foo");
这样,您就可以将模块导入QML并使用
Foo
对象。此语法向QML公开了所有标记为
Q_REVISION(0)
的方法和属性,如文档所述,这是默认值。假设我们的类
Foo
具有多个修订版本。class Foo : public QObject
{
Q_OBJECT
Q_PROPERTY(int normalProperty READ normalProperty)
Q_PROPERTY(int newProperty READ newProperty REVISION 1)
Q_PROPERTY(int newerProperty READ newerProperty REVISION 2)
public:
Foo();
public slots:
int normalProperty() { return 0; }
Q_REVISION(1) int newProperty() { return 1; }
Q_REVISION(2) int newerProperty() { return 2; }
};
通过使用以前的语法,我们将只能在QML中使用
normalProperty
,要使用其他版本,我们必须这样做。qmlRegisterType<Foo, 1>("MyModule", 1, 1, "Foo");
注意模板参数的区别,前一个在类名之后没有修订号。增加模块的次要版本(这是函数的第三个参数)也是一种好习惯。
这样,您将能够在QML中使用
normalProperty
和newProperty
。qmlRegisterType<Foo, 2>("MyModule", 1, 2, "Foo");
通过此调用,您将能够使用所有三个属性
normalProperty
,newProperty
和newerProperty
。您可以在QObject documentation上找到更多信息。
顺便问一句,我不知道这个宏。我希望我们俩都学到了新东西。 :)
关于c++ - Q_REVISION在Qt类中的含义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56699204/