[Development] QProperty and library coding guide

Ulf Hermann ulf.hermann at qt.io
Fri Jul 17 13:37:04 CEST 2020

> if it's all "fake" anyway, what exactly is the point of having that 
> struct in the first place? is it just to have an "anchor" in the 
> pre-processed code / AST?

The idea is that you can use the same name as getter and for 
assignment/binding/subscribe etc:

something = item->width();
item->width.onValueChanged([]() { qDebug() << "changed"; });
item->width = 44;
item->width.setBinding([]() { return otherItem->height(); });

We could instead establish a convention of using different names for all 
of these, but (at least to me) it feels ugly. The result would look like 

auto something = item->width();
item->widthOnValueChanged([]() { qDebug() << "changed"; });
item->widthAssign = 44; // drop in favor of classic setWidth()?
item->widthSetBinding([]() { return otherItem->height(); });
bool hasBinding = item->widthHasBinding();
auto binding = item->widthBinding();

See the definition of Q_PRIVATE_QPROPERTY for the different methods we 
generate into the structs.


More information about the Development mailing list