[Interest] Better Q_PROPERTY() ?
py.siret at gmail.com
Fri Dec 7 13:00:37 CET 2018
> Hi all,
> I have found a little project which I found very nice to use especially if
> you want expose you C++ class to QML.
> Take a look at this project developed by Thomas Boutroue
> Here is the link to the Lightning Talk he had at QtWS15 in Berlin.
> I use this tools in my Qt/QML application, and it saves me so much time!
I've used those and personnal macros before but I've since stopped from
At first it's useful but then you need for example a property that's
computed from another one, or some special case properties.
Should I create a specific macro for this case used once or twice in the
project, or should I use a normal Q_PROPERTY and have a weird mix of non-Qt
macros and Q_PROPERTY, making your code less readable?
Sometimes l also want to set a breakpoint in a getter or setter, macros
don't help for that.
> Q_PROPERTY_RWN(proptype, arg) --> Q_PROPERTY(proptype arg READ arg
WRITE setArg NOTIFY argChanged)
Qt Creator makes it easy to write Q_PROPERTY with its snippets.
You can type Q_PROPERTY <ctrl-space> type <tab> name <return> and it will
generate Q_PROPERTY(type name READ name WRITE setName NOTIFY nameChanged)
You can add your own custom snippets if you want constant or non writable
The only gripe I have with Qt Creator regarding properties is its
* It adds setters as slots (
* Non scalar types like QString are passed as value to the property setter
( whereas if you create a QString member variable and you do Refactor /
Create Setter Member Function, the QString is passed as a const ref)
* Notify signals have parameters
That means that when I refactor a Q_PROPERTY to add missing members, I have
to do a second manual pass where I :
1 - Remove the signal parameter in the signal declaration and remove it in
the setter definition
2 - Move the setter from the public slots to under the getter
3 - Refactor move their definition to the .cpp
4 - Remove the useless added new lines.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Interest