如何使Qt中的菜单项变灰

How to gray out a menu item in Qt

本文关键字:菜单项 何使 Qt      更新时间:2023-10-16

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

如果您知道相应QAction的索引:

QMenu::actions.at(i).setEnabled(false);

附言:如下所示,setEnabled(bool)setDisabled(bool)是插槽(toggle()也是),因此它们可以连接到指示需要更改动作可用性的信号。

查找操作的索引并不一定方便。如果您已经用QtCreator的表单编辑器构建了界面,那么您将为每个菜单项执行一个操作。他们的名字是基于你第一次给动作的文字。例如,如果您以交互方式输入标题为Foo-Bar的菜单项,则会为您创建一个名为actionFoo_Bar的操作。只需在代码编辑器中键入ui->action,然后观察QtCreator将提出什么"名称完成"。

在这种情况下,我会考虑这样的电话:

ui->actionFoo_Bar.setEnabled(false);

您甚至可以使用使菜单项消失

ui->actionFoo_Bar.setVisible(false);