我们在使用QMenu的时候经常会在其中添加子菜单以及action,QMenu中的隐藏禁用的操作是针对action的,所以直接操作action是没有问题的可以想要的效果。但是menu不行,因为不是action类型的。
QAction *action = new QAction("show",this);
QMenu* menu = new QMenu(this);
menu->addAction(action);
//以上内容创建菜单
//如果想要根据需要进行操作的隐藏则可以直接使用setVisible函数
action->setVisible(false);//菜单中的操作会隐藏无法调用
//也可以在其中添加子菜单
QMenu *childMenu = new QMenu("childMenu",this);
menu->addMenu(childMenu);
//如果直接调用子菜单的隐藏函数没有任何效果,因为菜单中的操作是针对action类型的,所以menu的隐藏没有作用
childMenu->setVisible(false);//没有作用
//必须使用menuAction来获得action然后设置隐藏
childMenu->menuAction()->setVisible(false);//现在childMenu会隐藏