2017-07-31 1 views
2

Ce que je fait:méthode statique appel qml de 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") 

Mais malheureusement, j'ai une erreur qui dit: TypeError: Property 'validateMobile' de l'objet [object Object] n'est pas une fonction

Alors, comment puis-je exposer correctement la méthode statique à qml?

Quelqu'un peut-il m'aider? Merci beaucoup.

Répondre

1

qmlRegisterUncreatableType() est à propos de quelque chose d'autre entièrement. Ce que vous avez réellement besoin de faire est d'exposer une instance Validator en tant que propriété de contexte à QML, ou mieux encore, implement the validator as a singleton.

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

Il n'y a pas d'autre moyen. – dtech

+0

Merci beaucoup pour votre aide. – WhiteWater