Auf dieser Seite

QMultiObjectRegistryRef Class

Diese Klasse dient dazu, aus C++-Code auf Objekte zuzugreifen, die beim QML-Typ „ ObjectRegistry “ registriert sind. Mehr...

Header: #include <QMultiObjectRegistryRef>
CMake: find_package(Qt6 REQUIRED COMPONENTS QmlDesignSupport)
target_link_libraries(mytarget PRIVATE Qt6::QmlDesignSupport)
qmake: QT += qmldesignsupport
Seit: Qt 6.12
Erbt von: QAbstractObjectRegistryRef

Eigenschaften

  • objects : QQmlListProperty<QObject>

Öffentliche Funktionen

QMultiObjectRegistryRef(QObject *parent = nullptr)
QMultiObjectRegistryRef(QQmlEngine *engine, QObject *parent = nullptr)
QMultiObjectRegistryRef(QQmlEngine *engine, const QString &key, QObject *parent = nullptr)
QQmlListProperty<QObject> objects()
QList<QObject *> objectsList()

Signale

void objectAdded(QObject *obj)
void objectRemoved(QObject *obj)
void objectsChanged()

Neu implementierte geschützte Funktionen

virtual bool event(QEvent *event) override

Ausführliche Beschreibung

Über diese Referenz kann auf mehrere Objekte zugegriffen werden, die mit demselben Schlüssel registriert sind.

Anwendungsbeispiel:

// Registrieren Sie in einer QML-Datei ein Element, das mehrfach erstellt wird (z. B. einen Repeater-Delegaten)
Repeater {
    model: 4
    Rectangle {
        id: qmlRepeaterDelegate
        required property int index
        x: 50 * index
        width: 40
        height: 40
        MouseArea {
            property int repeaterIndex: qmlRepeaterDelegate.index
            anchors.fill: parent
            ObjectRegistry.key: "RepeatedMouseArea"
        }
    }
}

// Greife im C++-Code auf die registrierten Objekte zu, indem du die QML-Engine verwendest, mit der du die QML-Datei geladen hast
auto ref = new QMultiObjectRegistryRef(engine, "RepeatedMouseArea");
const auto repeaterObjects = ref->objects();
for (auto obj : repeaterObjects) {
    connect(obj, SIGNAL(clicked(QQuickMouseEvent*)),
            this, SLOT(handleRepeaterObjectClicked()));
}

void MyClass::handleRepeaterObjectClicked()
{
    qDebug() << "Clicked rectangle index: " << sender()->property("repeaterIndex").toInt()
}

Siehe auch ObjectRegistry und QAbstractObjectRegistryRef::key.

Dokumentation zu den Eigenschaften

[read-only] objects : QQmlListProperty<QObject>

Diese Eigenschaft stellt die Objekte bereit, auf die diese Instanz verweist. Es wird nicht garantiert, dass die Reihenfolge der Objekte in dieser Liste mit der Reihenfolge ihrer Registrierung übereinstimmt.

Zugriffsfunktionen:

QQmlListProperty<QObject> objects()

Benachrichtigungssignal:

void objectsChanged()

Siehe auch „ objectsList()“, „ ObjectRegistry “ und „ AbstractObjectRegistryRef::key “.

Dokumentation der Mitgliedsfunktionen

[explicit] QMultiObjectRegistryRef::QMultiObjectRegistryRef(QObject *parent = nullptr)

Erstellt eine Instanz von `QMultiObjectRegistryRef` mit ` parent`.

Hinweis: Verwenden Sie diesen Konstruktor nur, wenn die richtige QML-Engine beim Setzen des Schlüssels automatisch für diese Instanz ermittelt wird. Dies ist in der Regel nicht der Fall, wenn eine Instanz dieser Klasse aus C++ heraus erstellt wird. Es wird empfohlen, einen der Konstruktoren zu verwenden, die einen Zeiger auf eine QML-Engine als Parameter entgegennehmen.

Siehe auch ` qmlEngine()` und ` QAbstractObjectRegistryRef::key`.

[explicit] QMultiObjectRegistryRef::QMultiObjectRegistryRef(QQmlEngine *engine, QObject *parent = nullptr)

Erstellt eine Instanz von `QMultiObjectRegistryRef` mit den QML- engine en und ` parent`. Alle Registrierungen gelten nur für die angegebene QML-Engine.

Siehe auch QAbstractObjectRegistryRef::key.

[explicit] QMultiObjectRegistryRef::QMultiObjectRegistryRef(QQmlEngine *engine, const QString &key, QObject *parent = nullptr)

Erstellt eine Instanz von `QMultiObjectRegistryRef` mit den QML- engine, ` key ` und ` parent`. Alle Registrierungen gelten nur für die angegebene QML-Engine.

Siehe auch QAbstractObjectRegistryRef::key.

[override virtual protected] bool QMultiObjectRegistryRef::event(QEvent *event)

Umsetzt: ` QAbstractObjectRegistryRef::event(QEvent *event)`.

[signal] void QMultiObjectRegistryRef::objectAdded(QObject *obj)

Dieses Signal wird ausgelöst, wenn ein neues Objekt, obj, unter dem Schlüssel dieser Referenz registriert wurde.

[signal] void QMultiObjectRegistryRef::objectRemoved(QObject *obj)

Dieses Signal wird ausgelöst, wenn ein Objekt, obj, aus der Registrierung mit dem Schlüssel dieser Referenz entfernt wurde.

QList<QObject *> QMultiObjectRegistryRef::objectsList()

Gibt die Liste der registrierten Objekte zurück, die dem Schlüssel dieser Instanz entsprechen.

Dies ist eine Methode, um die Liste der registrierten Objekte als ` QList` abzurufen.

Es wird nicht garantiert, dass die Reihenfolge der Objekte in dieser Liste mit der Reihenfolge ihrer Registrierung übereinstimmt.

Siehe auch „ QAbstractObjectRegistryRef::key “ und „ objects “.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.