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( ...);
}
这两种方法有什么区别, 那一种更好? 展开
1.
createMenus() {
QMenu *menu;
menu = menuBar()->addMenu(tr("&File"));
menu->addAction( ...);
}
2.
把menu定义到类成员private里面, QMenu* fileMenu;
createMenus() {
fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction( ...);
}
这两种方法有什么区别, 那一种更好? 展开
1个回答
展开全部
是做成临时变量,还是做成类成员,主要还是看你后面还会不会用到这个变量。
通常情况下,尽量使用临时变量,因为临时变量超出了作用域后就会析构。
变量多了,会导致滥用。
如果后面还会用到(比如析构函数)这个变量,而且没有别的途径能够获得这个变量,那么就要做成类成员。
通常情况下,尽量使用临时变量,因为临时变量超出了作用域后就会析构。
变量多了,会导致滥用。
如果后面还会用到(比如析构函数)这个变量,而且没有别的途径能够获得这个变量,那么就要做成类成员。
追问
那比如QMenu *menu;作为临时变量的话, 在createMenus()函数外会删除, 那为什么它创建的菜单却还存在?
追答
你的例子里稍有一点不同。
你先创建了一个QMenu指针,指向了一个菜单对象。如果没有后面的代码,QMenu*需要做成类成员(为了析构)。
可是你这里是menuBar()->addMenu()作出来的菜单,这个菜单对象已经在menuBar里了,由menuBar来管理(创建与析构),所以你不需要再保留菜单指针。当你销毁menuBar的时候,内部菜单会自动销毁。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询