Класс QQmlProperty
Класс QQmlProperty абстрагирует доступ к свойствам объектов, созданных из QML. Подробнее...
| Заголовок: | #include <QQmlProperty> |
| CMake: | find_package(Qt6 COMPONENTS Qml REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
| С момента: | Qt 5.0 |
Типы публичного доступа
| Перечисление | PropertyTypeCategory { InvalidCategory, List, Object, Normal } |
| Перечисление | Type { Invalid, Property, SignalProperty } |
Публичные функции
| QQmlProperty(const QQmlProperty &other) | |
| QQmlProperty(QObject *obj, const QString &name, QQmlEngine *engine) | |
| QQmlProperty(QObject *obj, const QString &name, QQmlContext *ctxt) | |
| QQmlProperty(QObject *obj, const QString &name) | |
| QQmlProperty(QObject *obj, QQmlEngine *engine) | |
| QQmlProperty(QObject *obj, QQmlContext *ctxt) | |
| QQmlProperty(QObject *obj) | |
| QQmlProperty() | |
| QQmlProperty & | operator=(const QQmlProperty &other) |
| bool | connectNotifySignal(QObject *dest, const char *slot) const |
| bool | connectNotifySignal(QObject *dest, int method) const |
| bool | hasNotifySignal() const |
| int | index() const |
| bool | isDesignable() const |
| bool | isProperty() const |
| bool | isResettable() const |
| bool | isSignalProperty() const |
| bool | isValid() const |
| bool | isWritable() const |
| QMetaMethod | method() const |
| QString | name() const |
| bool | needsNotifySignal() const |
| QObject * | object() const |
| QMetaProperty | property() const |
| QMetaType | propertyMetaType() const |
| int | propertyType() const |
| QQmlProperty::PropertyTypeCategory | propertyTypeCategory() const |
| const char * | propertyTypeName() const |
| QVariant | read() const |
| bool | reset() const |
| QQmlProperty::Type | type() const |
| bool | write(const QVariant &value) const |
| bool | operator==(const QQmlProperty &other) const |
Статические публичные члены
| QVariant | read(const QObject *object, const QString &name) |
| QVariant | read(const QObject *object, const QString &name, QQmlContext *ctxt) |
| QVariant | read(const QObject *object, const QString &name, QQmlEngine *engine) |
| bool | write(QObject *object, const QString &name, const QVariant &value) |
| bool | write(QObject *object, const QString &name, const QVariant &value, QQmlContext *ctxt) |
| bool | write(QObject *object, const QString &name, const QVariant &value, QQmlEngine *engine) |
Подробное описание
Так как QML использует систему метатипов Qt, все существующие классы QMetaObject могут использоваться для интроспекции и взаимодействия с объектами, созданными QML. Однако некоторые новые возможности, предоставляемые QML, такие как безопасность типов и присоединенные свойства, наиболее легко используются с помощью класса QQmlProperty, который упрощает их естественную сложность.
В отличие от QMetaProperty, который представляет свойство типа класса, QQmlProperty инкапсулирует свойство конкретного экземпляра объекта. Для чтения значения свойства программисты создают экземпляр QQmlProperty и вызывают метод read(). Аналогично, для записи значения свойства используется метод write().
Например, для следующего кода QML:
// MyItem.qml
import QtQuick 2.0
Text { text: "A bit of text" } Свойства объекта Text можно получить с помощью QQmlProperty, например так:
#include <QQmlProperty>
#include <QGraphicsObject>
...
QQuickView view(QUrl::fromLocalFile("MyItem.qml"));
QQmlProperty property(view.rootObject(), "font.pixelSize");
qWarning() << "Current pixel size:" << property.read().toInt();
property.write(24);
qWarning() << "Pixel size should now be 24:" << property.read().toInt(); Документация по типам членов
Перечисление QQmlProperty::PropertyTypeCategory
Это перечисление определяет категорию свойства QML.
| Константа | Значение | Описание |
|---|---|---|
QQmlProperty::InvalidCategory |
0 |
Свойство недействительно или является сигнальным свойством. |
QQmlProperty::List |
1 |
Свойство — список свойств QQmlListProperty. |
QQmlProperty::Object |
2 |
Свойство — указатель на тип, производный от QObject. |
QQmlProperty::Normal |
3 |
Свойство — нормальное свойство значения. |
Перечисление QQmlProperty::Type
Это перечисление определяет тип свойства QML.
| Константа | Значение | Описание |
|---|---|---|
QQmlProperty::Invalid |
0 |
Свойство недействительно. |
QQmlProperty::Property |
1 |
Свойство — обычное свойство Qt. |
QQmlProperty::SignalProperty |
2 |
Свойство — свойство сигнала. |
Документация по функциям-членам
QQmlProperty::QQmlProperty(const QQmlProperty &other)
Создаёт копию other.
QQmlProperty::QQmlProperty(QObject *obj, const QString &name, QQmlEngine *engine)
Создаёт QQmlProperty для свойства name объекта obj, используя среду для создания QML-компонентов, предоставленную engine.
QQmlProperty::QQmlProperty(QObject *obj, const QString &name, QQmlContext *ctxt)
Создаёт QQmlProperty для свойства name объекта obj, используя контекст ctxt.
Создание QQmlProperty без контекста сделает недоступными некоторые свойства, такие как присоединённые свойства.
QQmlProperty::QQmlProperty(QObject *obj, const QString &name)
Создаёт QQmlProperty для свойства name объекта obj.
QQmlProperty::QQmlProperty(QObject *obj, QQmlEngine *engine)
Создаёт QQmlProperty для свойства по умолчанию объекта obj, используя среду для создания QML-компонентов, предоставленную engine. Если свойства по умолчанию нет, создаётся недопустимое QQmlProperty.
QQmlProperty::QQmlProperty(QObject *obj, QQmlContext *ctxt)
Создаёт QQmlProperty для свойства по умолчанию объекта obj, используя контекст ctxt. Если свойства по умолчанию нет, создаётся недопустимое QQmlProperty.
QQmlProperty::QQmlProperty(QObject *obj)
Создаёт QQmlProperty для свойства по умолчанию объекта obj. Если свойства по умолчанию нет, создаётся недопустимое QQmlProperty.
QQmlProperty::QQmlProperty()
Создаёт недопустимое QQmlProperty.
QQmlProperty &QQmlProperty::operator=(const QQmlProperty &other)
Присваивает other этому QQmlProperty.
bool QQmlProperty::connectNotifySignal(QObject *dest, const char *slot) const
Подключает сигнал уведомления о изменении свойства к указанному слоту объекта dest и возвращает true. Возвращает false, если это метасвойство не представляет собой обычное свойство Qt или у него нет сигнала уведомления о изменении, или если объект dest не имеет указанного слота.
Примечание: slot должен передаваться с помощью макроса SLOT(), чтобы он был правильно идентифицирован.
bool QQmlProperty::connectNotifySignal(QObject *dest, int method) const
Подключает сигнал уведомления о изменении свойства к указанному методу объекта dest и возвращает true. Возвращает false, если это метасвойство не представляет собой обычное свойство Qt или у него нет сигнала уведомления о изменении, или если объект dest не имеет указанного метода.
bool QQmlProperty::hasNotifySignal() const
Возвращает true, если свойство имеет сигнал уведомления о изменении, иначе false.
int QQmlProperty::index() const
Возвращает индекс Qt метаобъекта свойства.
bool QQmlProperty::isDesignable() const
Возвращает true, если свойство может быть настраиваемо, иначе false.
bool QQmlProperty::isProperty() const
Возвращает true, если этот QQmlProperty представляет собой обычное свойство Qt.
bool QQmlProperty::isResettable() const
Возвращает true, если свойство может быть сброшено, иначе false.
bool QQmlProperty::isSignalProperty() const
Возвращает true, если этот QQmlProperty представляет собой QML-свойство сигнала.
bool QQmlProperty::isValid() const
Возвращает true, если QQmlProperty ссылается на допустимое свойство, иначе false.
bool QQmlProperty::isWritable() const
Возвращает true, если свойство доступно для записи, иначе false.
QMetaMethod QQmlProperty::method() const
Возвращает QMetaMethod для данного свойства, если это SignalProperty, в противном случае возвращает недействительный QMetaMethod.
QString QQmlProperty::name() const
Возвращает имя этого QML-свойства.
Примечание: Функция-получатель для имени свойства.
bool QQmlProperty::needsNotifySignal() const
Возвращает true, если для свойств, к которым привязаны, нужен сигнал уведомления об изменении, иначе false.
Некоторые свойства, такие как присоединённые свойства или те, значение которых никогда не меняется, не требуют сигнала уведомления.
QObject *QQmlProperty::object() const
Возвращает QQmlProperty's QObject.
Примечание: Функция-получатель для объекта свойства.
QMetaProperty QQmlProperty::property() const
Возвращает Qt-свойство, связанное с этим QML-свойством.
QMetaType QQmlProperty::propertyMetaType() const
Возвращает метатип свойства.
См. также propertyType.
int QQmlProperty::propertyType() const
Возвращает идентификатор метатипа свойства или QMetaType::UnknownType, если свойство не имеет метатипа.
См. также propertyMetaType.
QQmlProperty::PropertyTypeCategory QQmlProperty::propertyTypeCategory() const
Возвращает категорию свойства.
const char *QQmlProperty::propertyTypeName() const
Возвращает имя типа свойства, или 0, если свойство не имеет имени типа.
QVariant QQmlProperty::read() const
Возвращает значение свойства.
QVariant QQmlProperty::read(const QObject *object, const QString &name)
Возвращает значение свойства name объекта object. Этот метод эквивалентен:
QQmlProperty p(object, name); p.read();
QVariant QQmlProperty::read(const QObject *object, const QString &name, QQmlContext *ctxt)
Возвращает значение свойства name объекта object, используя контекст ctxt. Этот метод эквивалентен:
QQmlProperty p(object, name, context); p.read();
QVariant QQmlProperty::read(const QObject *object, const QString &name, QQmlEngine *engine)
Возвращает значение свойства name объекта object, используя среду для создания QML-компонентов, предоставленную engine. . Этот метод эквивалентен:
QQmlProperty p(object, name, engine); p.read();
bool QQmlProperty::reset() const
Сбрасывает свойство и возвращает true, если свойство может быть сброшено. Если свойство не может быть сброшено, ничего не происходит, и возвращается false.
QQmlProperty::Type QQmlProperty::type() const
Возвращает тип свойства.
bool QQmlProperty::write(const QVariant &value) const
Устанавливает значение свойства на value. Возвращает true при успехе или false если свойство не может быть установлено из-за неверного типа value, например.
[static] bool QQmlProperty::write(QObject *object, const QString &name, const QVariant &value)
Записывает value в свойство name объекта object. Этот метод эквивалентен:
QQmlProperty p(object, name); p.write(value);
Возвращает true при успехе, false в противном случае.
[static] bool QQmlProperty::write(QObject *object, const QString &name, const QVariant &value, QQmlContext *ctxt)
Записывает value в свойство name объекта object, используя контекст QQmlContext ctxt. Этот метод эквивалентен:
QQmlProperty p(object, name, ctxt); p.write(value);
Возвращает true при успехе, false в противном случае.
[static] bool QQmlProperty::write(QObject *object, const QString &name, const QVariant &value, QQmlEngine *engine)
Записывает value в свойство name объекта object, используя среду для создания QML-компонентов, предоставляемую engine. Этот метод эквивалентен:
QQmlProperty p(object, name, engine); p.write(value);
Возвращает true при успехе, false в противном случае.
bool QQmlProperty::operator==(const QQmlProperty &other) const
Возвращает true, если other и это свойство QQmlProperty представляют одно и то же свойство.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qqmlproperty.html