[Interest] Widget event called after it has been deleted

Etienne Sandré-Chardonnal etienne.sandre at m4x.org
Wed Sep 18 11:53:26 CEST 2013


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20130918/8d67c99d/attachment.html>


More information about the Interest mailing list