[Interest] Create the main widget on heap in main()
Constantin Makshin
cmakshin at gmail.com
Sat Jan 11 12:23:54 CET 2014
True, but why would one need a parented object in main()? :-)
On Jan 11, 2014 3:13 PM, "Etienne Sandré-Chardonnal" <etienne.sandre at m4x.org>
wrote:
> QObjects with a parent should never be allocated on stack (otherwise, you
> delete them twice)
>
>
> 2014/1/11 Constantin Makshin <cmakshin at gmail.com>
>
>> Saving some stack space may make sense on mobile platforms, but in
>> general yes, creating objects on the heap in main() is pretty much the same
>> thing as creating them on the stack.
>> On Jan 11, 2014 2:02 PM, "Alejandro Exojo" <suy at badopi.org> wrote:
>>
>>> El Saturday 11 January 2014, 程梁 escribió:
>>> > Yes, I tought there is no any problem about this sample demo. But is
>>> there
>>> > any posibility when the application is large? According to your words I
>>> > don't see any problem about creating the main widget on heap because
>>> the
>>> > main event loop will close all visible widgets. And no widget should be
>>> > created in other thead so all widgets must be in main thread, that
>>> means
>>> > they will be closed at last. So it is OK when you create the main
>>> widget
>>> > on heap in main, am I right?
>>>
>>> What I don't understand yet is the reason to do it, though. Why not
>>> create
>>> them as local variables?
>>>
>>> If you insist in doing it that way, is OK, just make sure you don't leak
>>> any
>>> memory/resources. One pattern that I saw for creating applications on
>>> Sailfish
>>> OS is the following (and that I don't say is either good or bad):
>>>
>>> QScopedPointer<QApplication> app(new QApplication(argc, argv));
>>> QScopedPointer<QQuickView> view(new QQuickView);
>>> view->setSource("/path/to/main.qml");
>>> (...)
>>> return app->exec();
>>>
>>> So, basically is the same, but the objects are instantiated with new,
>>> and you
>>> make sure you don't leak them through a smart pointer class.
>>>
>>> For your example with a QLabel is easier, since if the object has a
>>> parent,
>>> you can forget about it, and the parent will delete all its children.
>>>
>>> --
>>> Alex (a.k.a. suy) | GPG ID 0x0B8B0BC2
>>> http://barnacity.net/ | http://disperso.net
>>> _______________________________________________
>>> Interest mailing list
>>> Interest at qt-project.org
>>> http://lists.qt-project.org/mailman/listinfo/interest
>>>
>>
>> _______________________________________________
>> Interest mailing list
>> Interest at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/interest
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20140111/c52f6980/attachment.html>
More information about the Interest
mailing list