2013-06-27 3 views

ответ

2

Q_PROPERTY

Из документации (https://qt-project.org/doc/qt-4.8/properties.html):

Qt предоставляет сложную систему свойств, аналогичную, поставляемыми некоторыми поставщиками компиляторов. Однако, как библиотека, не зависящая от компилятора и платформы, Qt не полагается на нестандартные функции компилятора, такие как __property или [property]. Решение Qt работает с любым стандартным компилятором C++ на каждой платформе Qt. Он основан на метаобъектной системе, которая также обеспечивает межобъектную связь через сигналы и слоты.

1

стандарта и присваиватель выглядит следующим образом:

void YourClass::setSomeValue(const type &newValue) { 
    if (newValue!=someValue) { 
     someValue = newValue; 
     emit someValueChanged(someValue); 
     // some optional invocations to update sizeHint or schedule widget redrawing ... : 
     update(); 
     updateGeometry(); 
    } 
} 

type YourClass::someValue() const { 
    return someValue; 
} 

, если вы ищете что-то вроде @synthesize в Objcetive C нет такой вещи в Qt, но вы можете определить свой собственный макрос (я иногда что-то подобное).

+0

Это вещество, а не стиль, но спасибо за полезный шаблон. – Bruce

+0

Вопрос был «способ реализовать геттеры и сеттеры», поэтому я не понимаю ваших возражений. –

+0

Я искал использование Q_PROPERTY, которое больше соответствует Qt, чем ваше решение, которое является более ванильным C++. – Bruce