[Qt-qml] Accessing C++ singleton from QML
bea.lam at nokia.com
bea.lam at nokia.com
Thu Oct 28 04:20:33 CEST 2010
Hi Alex,
On 28/10/2010, at 5:04 AM, ext Alex wrote:
> Hi all,
>
> This is probably a silly question, but how do I access a singleton
> instance of a C++ class from QML?
>
> For example, I have:
>
> class Settings : QObject {
> public:
> static Settings *instance();
>
> private:
> Settings();
> };
>
> In my QML code, I want to do the moral equivalent of the following:
>
> property variant mySettings : Settings::instance()
>
The static function can't be directly called from QML.
One way to do it would be to return Settings::instance() from a property instead:
class MyAppData : public QObject
{
Q_OBJECT
Q_PROPERTY(Settings* settings READ settings)
public:
Settings *settings() const { return Settings::instance(); }
};
Then if MyAppData and Settings are both registered as QML types, you can do:
// qml
MyAppData { id: data }
property variant settings: data.settings
For the Settings class, if you register it using the version of qmlRegisterType() that takes no arguments, it does not need a default constructor.
regards,
Bea
More information about the Qt-qml
mailing list