Класс 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, Список, Объект, Нормальный } |
| перечисление | Тип { Недействительный, Свойство, СигнальноеСвойство } |
Открытые функции
| 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 | индекс() const |
| bool | isDesignable() const |
| bool | isProperty() const |
| bool | isResettable() const |
| bool | isSignalProperty() const |
| bool | isValid() const |
| bool | isWritable() const |
| QMetaMethod | метод() const |
| QString | имя() const |
| bool | needsNotifySignal() const |
| QObject * | объект() const |
| QMetaProperty | свойство() const |
| int | propertyType() const |
| QQmlProperty::PropertyTypeCategory | propertyTypeCategory() const |
| const char * | propertyTypeName() const |
| QVariant | чтение() const |
| bool | сброс() const |
| QQmlProperty::Type | тип() const |
| bool | запись(const QVariant &value) const |
| bool | operator==(const QQmlProperty &other) const |
Статические открытые члены
| QVariant | чтение(const QObject *object, const QString &name) |
| QVariant | чтение(const QObject *object, const QString &name, QQmlContext *ctxt) |
| QVariant | чтение(const QObject *object, const QString &name, QQmlEngine *engine) |
| bool | запись(QObject *object, const QString &name, const QVariant &value) |
| bool | запись(QObject *object, const QString &name, const QVariant &value, QQmlContext *ctxt) |
| bool | запись(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(); Документация по типам членов
enum QQmlProperty::PropertyTypeCategory
Этот перечисление определяет категорию свойства QML.
| Константа | Значение | Описание |
|---|---|---|
QQmlProperty::InvalidCategory |
0 |
Свойство недействительно или является свойством сигнала. |
QQmlProperty::List |
1 |
Свойство является списком свойств QQmlListProperty. |
QQmlProperty::Object |
2 |
Свойство является указателем на тип, производный от QObject. |
QQmlProperty::Normal |
3 |
Свойство является обычным свойством значения. |
enum 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-свойством.
int QQmlProperty::propertyType() const
Возвращает тип QVariant свойства или QVariant::Invalid, если свойство не имеет типа QVariant.
QQmlProperty::PropertyTypeCategory QQmlProperty::propertyTypeCategory() const
Возвращает категорию свойства.
const char *QQmlProperty::propertyTypeName() const
Возвращает имя типа свойства или 0, если у свойства нет имени типа.
QVariant QQmlProperty::read() const
Возвращает значение свойства.
[static] QVariant QQmlProperty::read(const QObject *object, const QString &name)
Возвращает значение свойства name объекта object. Этот метод эквивалентен:
QQmlProperty p(object, name); p.read();
[static] QVariant QQmlProperty::read(const QObject *object, const QString &name, QQmlContext *ctxt)
Возвращает значение свойства name объекта object, используя контекст ctxt. Этот метод эквивалентен:
QQmlProperty p(object, name, context); p.read();
[static] 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.0/qqmlproperty.html