[Development] About ALIAS in Q_PROPERTY

Simon Hausmann simon.hausmann at digia.com
Wed Mar 12 13:36:03 CET 2014


On Wednesday 12. March 2014 12.48.20 Olivier Goffart wrote:
> On Monday 10 March 2014 17:43:35 Giuseppe D'Angelo wrote:
> > Can you please explain what this feature is about, why do you think
> > it's useful, how it's supposed to be used, etc.?
> > 
> > On 10 March 2014 17:30, mikhail.svetkin at gmail.com
> > 
> > <mikhail.svetkin at gmail.com> wrote:
> > > Hello, I would like to clarify wherein the complexity
> > > (https://codereview.qt-project.org/#change,80412)?
> > > Ready to listen to any suggestions and implement them.
> 
> This is a follow-up on the earlier discussion:
> "About Q_PROPERTY in custom widget plugin for designer"
> 
> Svetkin's first idea was to extend the READ and WRITE attributes to be more
> complex expressions such as:
> 
>   Q_PROPERTY(QString label READ ui->customWidget->label
>                            WRITE ui->customWidget->setLabel)
> 
> And he even made a patch for it: (https://codereview.qt-project.org/77758)
> There was small issues with the patch. Notably on how complex can the
> expression be, and also on the fact that it would still be hard to have a
> NOTIFY signal.
> 
> I was also wondering if it would not be better to copy QML's idea of
> property aliases:
> 
>  Q_PROPERTY(QString label ALIAS CustomWidget ui->customWidget->label)
> 
> However, now that Svetkin proposed a patch, I feel that it is not so much of
> a good idea. I think the syntax is not so nice especially the need to have
> both the class name and the 'path' to the property. And also because the
> notify signal is still not automatic.
> 
> And overall, i find myself preferring the first idea better. Hence I would
> like more opinions from the list.
> 
> The other question is if we should have that at all. How common is it to
> have property alias like this?

I'm also not sure if it's worth it. Perhaps using Q_PRIVATE_PROPERTY gets us 
close enough?


My worry would be that it has to work together with QML, which requires an API 
to resolve aliases at run-time, in order to install bindings on the _real_ 
property and not the alias (and therefore also remove a previously installed 
binding).

The alias implementation QML goes through quite some lengths to achieve that 
and the automatic connect to the notify signal.


Simon



More information about the Development mailing list