[Interest] Widget event called after it has been deleted

Alex Malyushytskyy alexmalvtk at gmail.com
Wed Sep 18 22:50:52 CEST 2013


>> 1) I know could use a QueuedConnection for the previously described
action, but I don't like that kind of GUI design where a QueuedConnection
is required to avoid an app crash...

I do not see why you need to use QueuedConnection. I hope you do not want
to say you have that 2 widgets you have are in different threads.


On Wed, Sep 18, 2013 at 2:53 AM, Etienne Sandré-Chardonnal <
etienne.sandre at m4x.org> wrote:

> Dear all,
>
> In my app, I have two main widgets :
>  - One displaying a tree (TreeWidget) and allowing selecting nodes.
>  - One for editing the selected node (EditWidget), embedded in a
> QScrollArea
>
> Selecting a node sets a new EditWidget using QScrollArea::setWidget. This
> deletes the previous widget with a standard "delete" statement as seen in
> Qt code.
>
> One of the possible actions in EditWidget tells the TreeWidget to select
> another node. This is the issue : it crashes because a queued event
> (generally a focus out) gets called while the widget is deleted already.
>
> 1) I know could use a QueuedConnection for the previously described
> action, but I don't like that kind of GUI design where a QueuedConnection
> is required to avoid an app crash...
>
> 2) I could use scrollArea->takeWidget()->deleteLater() before setWidget().
> I will try that.
>
> 3) Wouldn't it be better to use deleteLater() in the
> QScrollArea::setWidget ? This would solve the issue here. How about
> changing this in Qt source?
>
> I'm using 4.8.1
>
> Etienne
>
>
> _______________________________________________
> 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/20130918/e447aba9/attachment.html>


More information about the Interest mailing list