Как выделить пункт меню в Qt - PullRequest
12 голосов
/ 01 марта 2012

Я строю небольшую программу в Qt с панелями меню (menuBar), используя C ++, и я хотел бы знать, как выделить (например, отключить) пункт меню, когда активирована определенная переменнаяВозможно ли это?

Ответы [ 2 ]

15 голосов
/ 01 марта 2012

Если вам известен индекс соответствующего QAction:

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

P.S. Как любезно предложено ниже, setEnabled(bool) и setDisabled(bool) являются слотами (как и toggle()), поэтому они могут быть подключены к сигналу, указывающему на необходимость изменения доступности действия.

5 голосов
/ 20 октября 2014

Поиск по указателю действия не обязательно удобен. Если вы создали интерфейс с помощью редактора форм QtCreator, то у вас будет действие для каждого пункта меню. Их имена основаны на тексте, который вы сначала даете действиям. Например, если вы в интерактивном режиме вводите пункт меню с заголовком Foo Bar , то для вас создается действие с именем actionFoo_Bar. Просто введите ui-> action в редакторе кода и посмотрите, что QtCreator предложит «завершение имени».

В таком случае я бы посчитал такой вызов:

ui->actionFoo_Bar.setEnabled(false);

Вы можете даже заставить пункт меню исчезнуть с помощью

ui->actionFoo_Bar.setVisible(false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...