2017-07-31 9 views
2

Cからの呼び出しの静的メソッド:どうQML私が行って何++

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

関連する問題