【发布时间】:2012-03-19 09:08:59
【问题描述】:
我正在使用 C++ 在 Qt 中构建一个带有菜单栏 (menuBar) 的小程序,我想知道在激活某个变量时如何使菜单项变灰(例如禁用)。有可能吗?
【问题讨论】:
我正在使用 C++ 在 Qt 中构建一个带有菜单栏 (menuBar) 的小程序,我想知道在激活某个变量时如何使菜单项变灰(例如禁用)。有可能吗?
【问题讨论】:
寻找动作的索引不一定方便。如果您已经使用 QtCreator 的表单编辑器构建了界面,那么您将对每个菜单项进行操作。它们的名称基于您首先赋予操作的文本。例如,如果您以交互方式输入标题为 Foo Bar 的菜单项,则会为您创建一个名为 actionFoo_Bar 的操作。只需在代码编辑器中键入 ui->action 并观察 QtCreator 会提出什么“名称完成”。
在这种情况下,我会考虑这样的调用:
ui->actionFoo_Bar.setEnabled(false);
您甚至可以使用
使菜单项消失ui->actionFoo_Bar.setVisible(false);
【讨论】:
ui-> 下,也没有出现在ui->mainToolBar 下(这是它出现在 UI 上的位置)。还应该在哪里?我在 Debian 10 上使用 Qt Creator 4.8.2。
如果你知道相应 QAction 的索引:
QMenu::actions.at(i).setEnabled(false);
附:如下所示,setEnabled(bool) 和 setDisabled(bool) 是插槽(toggle() 也是如此),因此它们可以连接到指示需要更改操作可用性的信号。
【讨论】:
setEnabled(bool) 和 setDisabled(bool) 是插槽(toggle() 也是如此),因此它们可以连接到指示需要更改操作可用性的信号.
signal: QMenu::aboutToShow() 时切换它;无论如何改变不可见的东西是没有意义的。