Name
qdestroyed — catch widget destruction
Syntax
qdestroyed [widget] cmds
Description
The qdestroyed command allows one to catch the destruction of widgets. The programmer can assign Tcl commands to be executed immediately before the destruction of the widget. This is useful for cleanup actions. Unlike a closeevent (see qcloseevent) the destruction process can not be halted.
A widget can be deleted in several ways. A widget will always be deleted if it's parent is deleted. It will also be deleted when closing if the [deleteonclose] attribute is set. A widget can be deleted directly using the qdelete command.
Deleting a widget is not the same as closing it. Closing in itself just renders the widget invisible, while still retaining the widget in the computers memory for later redisplay. Deleting a widget removes the widget entirely from memory, requiring that the widget be re-created in order to be redisplayed. A widget is always closed before it is deleted.
Arguments
widget
The widget for which we want to catch the destruction event. This can be any widget or qaction .
cmds
Tcl statements to be executed when the widget is destructed. This will often be the name of a Tcl procedure. The widget's children are destroyed immediately after these commands are processed.
Examples
Ex.1: Catching a destruct event
# # Procedure to be called when the widget is destructing. # proc killed {} { puts "Object destroyed" } set w [qwidget] # This is needed for the widget to be deleted when closing qsetattribute $w deleteonclose # Assign the 'killed' procedure as destruction-callback qdestroyed $w killed qshow $w
Example Catching a destruct event shows the procedure 'killed' assigned as a callback function to be called when the window 'w' is destructed.