qt - QMainWindow and ownership takeover policy -
i stumbled upon in documentation qmainwindow::setmenubar(qmenubar * menubar)
:
note: qmainwindow takes ownership of menubar pointer , deletes @ appropriate time.
example code (in method of class deriving qmainwindow
):
qmenubar * menubar = new qmenubar(this); setmenubar(menubar) // <-- transfer ownership // use menubar pointer add actions, menus, , not
can still rely on local pointer qmenubar
after call setmenubar
? mean, guaranteed?
when delete qmainwindow
derived class, qmenubar
object deleted because qmainwindow
set parent when constructing - policy lies in later "ownership takeover" through setmenubar
other copy of reference/pointer?
yes, it's safe use pointer long object took ownership alive.
the fact qmainwindow
"takes ownership" of menu means take care of deleting when not needed anymore. common qt, see object trees & ownership documentation.
that being said, sample code rewritten this:
qmenubar *menu = menubar();
this create empty menu if necessary, don't have worry transfer of ownership. call member function whenever need act on windows's menu bar.
Comments
Post a Comment