Есть ли способ Qt для реализации геттеров и сеттеров? Возможно, есть макросы Qt или что-то подобное.Предпочтительный стиль Qt для геттеров и сеттеров
0
A
ответ
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, но вы можете определить свой собственный макрос (я иногда что-то подобное).
Это вещество, а не стиль, но спасибо за полезный шаблон. – Bruce
Вопрос был «способ реализовать геттеры и сеттеры», поэтому я не понимаю ваших возражений. –
Я искал использование Q_PROPERTY, которое больше соответствует Qt, чем ваше решение, которое является более ванильным C++. – Bruce