2017-07-31 63 views
2

静态方法我做了什么:如何QML调用从C++

validator.h:

class UTILSSHARED_EXPORT Validator: public QObject { 
    Q_OBJECT 
public: 
    Validator(QObject *parent = 0); 
    ~Validator(); 
    Q_INVOKABLE static bool validateMobile(const QString target); 

}; 

main.cpp中:

qmlRegisterUncreatableType<Validator>("CT.Utils", 1, 0, "ValidatorKit", "It just a kit"); 

QML:

import CT.Utils 1.0 
ValidatorKit.validateMobile("112344") 

但不幸的是,我得到一个错误,说:TypeError:Property对象的“validateMobile”的翻译:不是一个函数

所以,我怎么可以公开静态方法来正确QML?

任何人可以帮助我吗?非常感谢。

回答

1

qmlRegisterUncreatableType()是别的东西完全。

实际上你需要做的是将一个Validator实例作为上下文属性公开为QML,甚至更好的是implement the validator as a singleton

qmlRegisterSingletonType<Validator>("CT.Utils", 1, 0, "ValidatorKit", fooThatReturnsValidatorPtr); 
+1

有没有其他办法。 – dtech

+0

非常感谢您的帮助。 – WhiteWater