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

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -