Barra de menú Qt, barra de herramientas y barra de estado

Qt abstrae los elementos con los que el usuario interactúa con la interfaz en una "acción", representada por la clase QAction. QAction se puede agregar a los menús y barras de herramientas. Durante el período, también presentamos algunos detalles en detalle, como el uso de archivos de recursos, el modelo de objetos y el administrador de diseño. Esta sección presenta en detalle la barra de menú, la barra de herramientas y la barra de estado.

Asumimos que la ventana todavía está construida sobre la clase QMainWindow, lo que facilitará mucho nuestro desarrollo. Por supuesto, en el proceso de desarrollo real, QMainWindow generalmente solo se usa como la "ventana principal", y la ventana de diálogo usa más la clase QDialog. Como veremos más adelante, la clase QDialog carece de algunas funciones convenientes proporcionadas por la clase QMainWindow, como menuBar() y toolBar().

openAction = new QAction(QIcon(":/images/open_Icon"), tr("&Open..."), this);
openAction->setShortcuts(QKeySequence::Open);
openAction->setStatusTip(tr("Open an existing file"));
connect(openAction, &QAction::triggered, this, &MainWindow::open);

QMenu *file = menuBar()->addMenu(tr("&File"));
file->addAction(openAction);

QToolBar *toolBar = addToolBar(tr("&File"));
toolBar->addAction(openAction);

Vemos que Qt crea una barra de menú para nosotros usando la función menuBar(). menuBar() es una función proporcionada por QMainWindow, por lo que no la encontrará en QWidget o QDialog. Esta función devuelve la barra de menú de la ventana o crea una nueva si no hay barra de menú. Esto también explica por qué podemos usar directamente el valor de retorno de la función menuBar(), después de todo, ¡no hemos creado un objeto de barra de menú! Resulta que esto es lo que menuBar() creó y devolvió para nosotros.

En Qt, la clase que representa el menú es QMenuBar (deberías haber pensado en este nombre). QMenuBar representa una barra de menú en la parte superior de la ventana. Le agregamos un menú usando su función addMenu(). Aunque solo proporcionamos una cadena como argumento, Qt no la mostrará como el texto del menú recién creado. En cuanto al ampersand, ya hemos explicado que esto crea una tecla de acceso directo para el menú. Cuando creamos un objeto de menú, podemos agregar QAction al menú, que es el rol de la función addAction().

La sección QToolBar a continuación es muy similar. Como sugiere el nombre, QToolBar es una barra de herramientas. Usamos la función addToolBar() para agregar nuevas barras de herramientas. ¿Por qué el anterior es menuBar() y ahora addToolBar()? Porque una ventana tiene solo una barra de menú, pero puede tener múltiples barras de herramientas. Si modificamos un poco el código:

QToolBar *toolBar = addToolBar(tr("&File"));
toolBar->addAction(openAction);

QToolBar *toolBar2 = addToolBar(tr("Tool Bar 2"));
toolBar2->addAction(openAction);

Vemos que ahora hay dos barras de herramientas:

La barra de herramientas se puede configurar como fija, flotante, etc. Para configuraciones específicas, consulte la documentación de Qt.

Como dijimos antes, use QAction::setStatusTip() para configurar el texto de aviso de la acción en la barra de estado. Pero cuando colocamos el mouse sobre el botón ahora, no podemos ver el texto del mensaje. La razón es simple, no agregamos una barra de estado. ¿Cómo agregarlo? Similar al QMainWindow::menuBar() anterior, QMainWindow tiene una función statusBar(). Agreguemos esta función:

statusBar();

Agregamos una barra de estado solitaria () que parece anodina, pero, similar a la implementación anterior de barra de menú (), esta función devolverá un objeto QStatusBar, si no, créelo primero y luego devuélvalo.

QStatusBar hereda QWidget, por lo que podemos agregar cualquier otra subclase de QWidget a la barra de estado para crear una barra de estado compleja con una pantalla proporcional y un interruptor de cuadrícula similar a la parte inferior de la ventana de Photoshop. Para obtener más información sobre QStatusBar, consulte la documentación de Qt.

¿Qué pasa con QDialog o QWidget sin estas funciones? Recuerde, tanto QToolBar como QStatusBar son subclases de QWidget, por lo que podemos agregarlo a otro QWidget con un administrador de diseño. El diseño de QLayout proporciona la función setMenuBar(), que puede agregar fácilmente una barra de menú. Consulte la documentación para obtener más información.

Los beneficios de este artículo, gratis para recibir el paquete de materiales de aprendizaje de desarrollo Qt , video técnico, que incluye (base del lenguaje C ++, introducción a la programación Qt, mecanismo de señal y ranura QT, dibujo de imagen de desarrollo de interfaz QT, red QT, programación de base de datos QT, QT proyecto de combate, QSS, OpenCV, módulo rápido, preguntas de la entrevista, etc.) ↓↓↓↓↓↓Ver abajo↓↓Haga clic en la parte inferior del artículo para recibir la tarifa↓↓

Supongo que te gusta

Origin blog.csdn.net/m0_60259116/article/details/128791641
Recomendado
Clasificación