如何在Qt中使菜单项变灰

时间:2012-02-29 21:06:50

标签: c++ qt menu

我正在Qt中使用C ++在菜单栏(menuBar)中构建一个小程序,我想知道当某个变量被激活时如何灰显(例如禁用)菜单项。有可能吗?

2 个答案:

答案 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);