Estoy construyendo un pequeño programa en Qt con barras de menús (menuBar) usando C++ y me gustaría saber cómo atenuar (por ejemplo, deshabilitar) un elemento del menú cuando una cierta variable está activada. ¿Es posible?Cómo atenuar un elemento de menú en Qt
Respuesta
Si conoces a un índice de la QAction correspondiente:
QMenu::actions.at(i).setEnabled(false);
P. S. Como amablemente se solicita a continuación, setEnabled(bool)
y setDisabled(bool)
son ranuras (por lo que es toggle()
), por lo que se pueden conectar a una señal que indica la necesidad de cambiar la disponibilidad de la acción.
Buscar el índice de la acción no es necesariamente conveniente. Si ha creado la interfaz con el editor de formularios de QtCreator, tendrá una acción para cada elemento del menú. Sus nombres se basan en el texto que primero le das a las acciones. Por ejemplo, si ingresa de forma interactiva un elemento de menú con el título Foo Bar, se crea una acción llamada actionFoo_Bar para usted. Simplemente escriba ui> acción en el editor de código y observe qué "nombre completo" propondrá QtCreator.
En tal caso yo consideraría una llamada como esta:
ui->actionFoo_Bar.setEnabled(false);
Usted puede incluso hacer que el elemento de menú desaparece con
ui->actionFoo_Bar.setVisible(false);
- 1. QT y elemento de menú personalizado (QLineEdit)
- 2. Averiguar qué elemento de menú se activó en Qt
- 3. Qt - Menú emergente
- 4. Ocultar un elemento de menú en MFC
- 5. Cómo poner un ícono en un elemento de menú
- 6. JavaFX 2.0 Activando un menú como un elemento de menú
- 7. Creación de un menú emergente en Qt para QTableView
- 8. Creación de menú contextual con Qt Designer (Qt Creator IDE)
- 9. Cómo eliminar un elemento de menú contextual específico en Zedgraph
- 10. ¿Cómo puedo modificar un elemento de menú en el menú de opciones en Android?
- 11. Agregar un menú contextual a un elemento
- 12. ¿Cómo atenuar/deshabilitar un control de botón en Win Forms?
- 13. Agregar elemento de menú en Eclipse
- 14. ¿Es posible atenuar (no solo deshabilitar) un MenuItem en Android?
- 15. ¿Cómo iterar a través de las acciones de un menú en Qt?
- 16. Cómo agregar un elemento de menú al menú contextual predeterminado del botón derecho
- 17. Alinear grupo de menú a elemento de menú
- 18. ¿Cómo atenuar el volumen de forma natural?
- 19. ¿Cuándo debo usar una elipsis en un elemento de menú
- 20. cómo atenuar la imagen de fondo
- 21. WPF: ¿Cómo se puede agregar un nuevo elemento de menú a un menú en tiempo de ejecución?
- 22. agregar elemento de menú al menú contextual predeterminado
- 23. Cómo mostrar un menú contextual al hacer clic con el botón derecho en un elemento de menú
- 24. Cómo conectar el menú, haga clic en acción en Qt Creator?
- 25. ¿Cómo obtener QString de QListView elemento seleccionado en Qt?
- 26. Atenuar una ventana
- 27. ¿Cómo renderizar un widget complejo dentro de un elemento de vista de árbol en QT?
- 28. Agregar un elemento de menú contextual a Windows Explorer
- 29. Android: Obtener vista Referencia a un elemento de menú
- 30. Playframework está activo elemento de menú/ruta
Se podría añadir a su respuesta que 'setEnabled (bool) 'y' setDisabled (bool) 'son slots (también lo son' toggle() '), por lo que se pueden conectar a una señal que indique la necesidad de cambiar la disponibilidad de la acción. –
Thanx @LucTouraille! –
Si la variable cambia con frecuencia (más a menudo que se muestra el menú), puede ser conveniente alternar solo en respuesta a 'signal: QMenu :: aboutToShow()'; no tiene sentido cambiar algo invisible de todos modos. – MSalters