Подтвердить что ты не робот

Как вырезать пункт меню в Qt

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

ui->actionFoo_Bar.setEnabled(false);

Вы даже можете удалить элемент меню с помощью

ui->actionFoo_Bar.setVisible(false);