2017-07-31 90 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