×
Namespaces

Variants
Actions

Механизм свойств в классах Qt

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Совместимость
Платформа(ы):
Symbian

Статья
Автор: Den123 (09 Jan 2009)
Последнее редактирование: hamishwillee (08 May 2013)

Классы, унаследованные от QObject, могут использовать механизм свойств, поддерживаемый библиотекой Qt. Свойства - это поля класса, который определяются специальным образом и благодаря которым к атрибутам объекта класса можно получить доступ извне (например, из Qt Script). Свойства активно используются при разработке пользовательского интерфейса в UI Designer.

Для определения свойств используются директивы препроцессора:

Q_PROPERTY
(
type name
READ getFunction
[WRITE setFunction]
[RESET resetFunction]
[DESIGNABLE bool]
[SCRIPTABLE bool]
[STORED bool]
)

Из определения становится очевидным, что для задания свойства требуется как минимум указать тип, имя и метод чтения. Опциональные методы:

  • WRITE - запись значения
  • RESET - сброс значения
  • DESIGNABLE - отображение в инспекторе свойств
  • SCRIPTABLE - доступность в Qt Script
  • STORED - поддержка серилизации

Пример задания свойства:

class MyExample : public QObject
{
Q_OBJECT
 
Q_PROPERTY(int firstProperty READ getFirstPropValue WRITE setFirstPropValue)
 
private:
int m_firstProp;
 
public:
MyExample(QObject* obj = NULL): QObject(obj), m_firstProp(0)
{
}
 
int getFirstPropValue() const
{
return m_firstProp;
}
 
void setFirstPropValue(int value)
{
m_firstProp = value;
}
 
...
}

Доступ к свойству:

myExample->setProperty("firstProperty", 10);
int propValue = myExample->property("firstProperty").toInt();

Среды разработки, позволяющие визуально проектировать графический интерфейс Qt-приложений (Carbide, Qt Creator, Qt Designer), предоставляют доступ к свойствам с помощью отдельного инспектора:

HelloButton.png

This page was last modified on 8 May 2013, at 03:04.
159 page views in the last 30 days.