c++ - recuperar - ¿Hay alguna manera de evitar el funcionamiento oculto de una barra de herramientas?
partes de borland c++ (5)
En Qt, si hago clic derecho en una barra de herramientas, se mostrará el menú que me permite ocultar la barra de herramientas. Necesito desactivar esta funcionalidad porque no quiero que la barra de herramientas se oculte. ¿Hay alguna forma de hacer esto?
Hay varias formas de lograr esto sin tener que alterar la funcionalidad contextMenu. Vea los siguientes 3 ejemplos de PySide:
1. Deshabilite la función toggleViewAction
de QToolBar
:
UnhidableToolBar = QToolBar()
UnhidableToolBar.toggleViewAction().setEnabled(False)
2. Conéctese a la señal de visibilityChanged
:
toolbar.visibilityChanged.connect(lambda: toolbar.setVisible(True))
3. Subclase QToolBar
y usa hideEvent
:
class UnhideableQToolBar(QToolBar):
def hideEvent(self, event):
self.setVisibile(True)
Recomendación:
Mientras que 2 y 3 son bastante sucios, la solución 1 muestra la barra de herramientas en el menú contextual como un QDockWidget
que tiene la característica DockWidgetClosable
set. Entonces, usa la solución 1 o, si quieres eliminar la acción, echa un vistazo a la respuesta de Steven.
Pude configurar el ContextMenuPolicy directamente en la barra de herramientas (no en la ventana principal), siempre que use Qt::PreventContextMenu
o Qt::ActionsContextMenu
. Prevent
elimine el menú contextual y hacer clic con el botón derecho no tiene ningún efecto en la barra de herramientas, mientras que Actions
creó un bonito menú contextual compuesto por las acciones que ya están en mi barra de herramientas. Qt::NoContextMenu
no parece tener ningún efecto.
toolbar->setContextMenuPolicy(Qt::PreventContextMenu);
Reemplazar QMainWindow :: createPopupMenu () ej.
QMenu* MyApp::createPopupMenu()
{
QMenu* filteredMenu = QMainWindow::createPopupMenu();
filteredMenu->removeAction( mUnhidableToolBar->toggleViewAction() );
return filteredMenu;
}
Tenga en cuenta que las otras respuestas que sugieren desactivar el menú contextual solo funcionarán si desea desactivar la ocultación / visualización de todas las barras de herramientas y todos los widgets de acoplamiento.
Use setContextMenuPolicy (Qt :: NoContextMenu) para la ventana principal de la barra de herramientas.
Herede QToolbar y contextMenuEvent()
.