c++ Qt创建菜单栏代码QMenu写在类成员里面, 还是定义到方法里?

比如有个类方法是createMenus(),有两种方法添加菜单:1.createMenus(){QMenu*menu;menu=menuBar()->addMenu(tr... 比如有个类方法是createMenus() , 有两种方法添加菜单:
1.

createMenus() {
QMenu *menu;
menu = menuBar()->addMenu(tr("&File"));
menu->addAction( ...);

}
2.
把menu定义到类成员private里面, QMenu* fileMenu;

createMenus() {
fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction( ...);

}

这两种方法有什么区别, 那一种更好?
展开
 我来答
cooke1234
推荐于2016-04-26 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3578万
展开全部
是做成临时变量,还是做成类成员,主要还是看你后面还会不会用到这个变量。
通常情况下,尽量使用临时变量,因为临时变量超出了作用域后就会析构。
变量多了,会导致滥用。
如果后面还会用到(比如析构函数)这个变量,而且没有别的途径能够获得这个变量,那么就要做成类成员。
追问
那比如QMenu *menu;作为临时变量的话, 在createMenus()函数外会删除, 那为什么它创建的菜单却还存在?
追答
你的例子里稍有一点不同。
你先创建了一个QMenu指针,指向了一个菜单对象。如果没有后面的代码,QMenu*需要做成类成员(为了析构)。
可是你这里是menuBar()->addMenu()作出来的菜单,这个菜单对象已经在menuBar里了,由menuBar来管理(创建与析构),所以你不需要再保留菜单指针。当你销毁menuBar的时候,内部菜单会自动销毁。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式