[Development] RFC: RAII for property changes

Andre Somers andre at familiesomers.nl
Wed Apr 15 18:17:01 CEST 2015


On 15-4-2015 16:54, Keith Gardner wrote:
>
>
> On Wed, Apr 15, 2015 at 9:38 AM Marc Mutz <marc.mutz at kdab.com 
> <mailto:marc.mutz at kdab.com>> wrote:
>
>     Hi André,
>
>     On Wednesday 15 April 2015 11:49:56 André Somers wrote:
>     > void MyClass::setFoo(QString value)
>     > {
>     >    PropertyGuard guard(this, "foo");  //foo is the name of the
>     Q_PROPERTY
>     >    Q_UNUSED(guard);
>     >
>     >    m_foo = value;
>     > }
>
>     This is an interesting idea, though I don't think I have
>     encountered the
>     problems with which you motivate PropertyGuard.
>
>     For use in a library, though, I fear the string-based mechanism is too
>     inefficient. For use within QtWidgets, say, I'd suggest a
>     mechanism that works
>     on the member data directly.
>
>     Thanks,
>     Marc
>
>
> I have actually run into the same situation and made a template class 
> that owns the variable.  Its constructor takes an initial value and a 
> std::function<void (const T&)> as a callback for when the value 
> changes.  The callback can be a lambda or a std::bind to the expected 
> signal.  I also added overloads to allow for the templated class to 
> behave just like the contained type so that it can be swapped in 
> easily.  I figured the Qt project wouldn't like the submission of the 
> class due to its template nature and its use of std::function but i am 
> willing to share it if anyone is interested.

I'd certainly be interested to seeing how you solved this, yes. Thanks!

André

>
>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20150415/da15b6ab/attachment.html>


More information about the Development mailing list