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