[Interest] Migrating QWeakPointer to Qt5

Thiago Macieira thiago.macieira at intel.com
Fri May 6 23:54:03 CEST 2016


On sexta-feira, 6 de maio de 2016 12:14:14 PDT Nye wrote:
> On Fri, May 6, 2016 at 8:35 AM, Tom Isaacson <Tom.Isaacson at navico.com>
> 
> wrote:
> > I'm moving some Qt4.8.2 code which uses QWeakPointer to Qt5.6.
> > Simplifying a lot it looks like this:
> > [snippet ..]
> > but when I compile under Visual Studio 2013 I get this error:
> > error C2664: 'QWeakPointer<MyClass>::QWeakPointer(const QSharedPointer<T>
> > &)' : cannot convert argument 1 from 'MySettings *' to 'const
> > QWeakPointer<MySettings> &'
> 
> Is there a recommended method for migrating the use of QWeakPointer into
> 
> > Qt5?
> 
> Yes, by actually using a QSharedPointer for the constructor (as
> QWeakPointer is a weak reference to a shared pointer).

That's not the same thing. For a while, we had deprecated QPointer in favour 
of QWeakPointer for tracking QObjects you did not own. But we came to our 
senses before Qt 5.0 was launched and un-deprecated QPointer for that 
functionality.

QWeakPointer in Qt 5 is as you said: a weak reference to a shared pointer.

> > I tried changing the QWeakPointer to a QPointer but now I'm getting:
> > error C2440: 'static_cast' : cannot convert from 'QObject *' to MyClass *'
> > (GeneratedFiles\Debug\moc_MyCode.cpp)

Looks like a missing #include.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Interest mailing list