[Qt-interest] What is the use of QWeakPointer

Matthias Pospiech matthias.pospiech at gmx.de
Fri Apr 9 14:55:03 CEST 2010


Dan Milburn schrieb:
> Thiago Macieira wrote:
>   
>> Em Sexta-feira 09 Abril 2010, às 12:02:02, Dan Milburn escreveu:
>>     
>>> QWeakPointer<MyObject> weakPointer = ...
>>> MyObject *o = weakPointer.data();
>>> if( o )
>>> {
>>>     // Do something with o
>>> }
>>>
>>> Obviously this would cause problems in a multi-threaded environment, but 
>>> then I don't think QWeakPointer is suitable for that.
>>>       
>> The "proper" way is:
>>
>> QSharedPointer<MyObject> sp = weakPointer;
>> if ( sp ) {
>>     // do something with the shared pointer
>>     // and it won't get deleted
>> }
>>
>>     
>
> However this won't work if the weak pointer was initialized from a 
> QObject, which seemed to be what the OP was trying to do.
>
>   
Indeed, and as far as I understood from the docs - a weakpointer can 
only be constructed with a QObject based class.
Thus I am little confused.

Matthias





More information about the Qt-interest-old mailing list