1、首先要确定你需要操作的是一个QAction,而不是一个QMenu所以要从你那个menu中找到你需要操作的QAction,然后用setEnabled(false)
2、对于VB中的大部分控件都可以通过改变Enable来改变它是否可用
3、是不是说直接用menu中的action的对象直接设置吗?比如menu_1有个action_1时,直接调用action_1->setEnabled(false)
4、这里补充一下,原来在没有登录之前,我是用QT Designer把未登录时,不可用的菜单项都设置为(把Enabled的前面的勾勾去掉了),我登录后在一个槽函数里,用action_1->setEnabled(true)和menu_1->setEnabled(true),为了换用户名有个注销功能,目的为了把菜单栏回复为未登录时的状态。但是发现使用上面的代码无效。
5、一个widget的可用不可用确实是通过QWidget::setEnabled()控制的,QMenu是QWidget的派生类,所以也不例外。
6、但因为它是QMenu,Qt会自动根据QAction的状态来自动设置其状态(调用QWidget::setEnabled),但你这样一来直接将其搞乱了。所以你必须始终对 QAction 进行操作。