summaryrefslogtreecommitdiff
path: root/examples/qtobject/qtmetaobjectpublisher.h
blob: 3262525803550a0d6d5201bbfa2a074268586223 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef QTMETAOBJECTPUBLISHER_H
#define QTMETAOBJECTPUBLISHER_H

#include <QObject>
#include <QVariantMap>
#include <QPointer>
#include <QStringList>

class QtMetaObjectPublisher : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QStringList objectNames READ objectNames)
public:
    explicit QtMetaObjectPublisher(QObject *parent = 0);
    Q_INVOKABLE QVariantMap classInfoForObject(QObject*);
    QStringList objectNames() { return objects.keys(); }
    Q_INVOKABLE QObject* namedObject(const QString& name) {
        if (!objects.contains(name))
            return 0;
        return objects[name];
    }

public slots:
    void addObject(const QString& name, QObject* object)
    {
        objects[name] = object;
    }

private:
    QMap<QString, QPointer<QObject> > objects;

};

#endif // QTMETAOBJECTPUBLISHER_H