我正在Qt中使用C ++在菜单栏(menuBar)中构建一个小程序,我想知道当某个变量被激活时如何灰显(例如禁用)菜单项。有可能吗?
答案 0 :(得分:15)
如果您知道相应QAction的索引:
QMenu::actions.at(i).setEnabled(false);
P.S。如下面提到的那样,setEnabled(bool)
和setDisabled(bool)
是广告位(toggle()
}也是如此,因此它们可以连接到一个信号,表明需要更改操作的可用性。
答案 1 :(得分:5)
寻找动作的索引并不一定方便。如果您使用QtCreator的表单编辑器构建了界面,那么您将对每个菜单项执行操作。它们的名称基于您首先给予操作的文本。例如,如果以交互方式输入标题为 Foo Bar 的菜单项,则会为您创建名为actionFoo_Bar的操作。只需在代码编辑器中键入ui->操作,并观察QtCreator将提出的“名称完成”。
在这种情况下,我会考虑这样的电话:
ui->actionFoo_Bar.setEnabled(false);
您甚至可以通过
使菜单项消失ui->actionFoo_Bar.setVisible(false);