Establecimiento del Marco del Proyecto
Configuración de la Interfaz de Usuario y QSS
Para desarrollar interfaces en Qt, es esencial manejar la disposición y los estilos. A continuación, se detallan aspectos clave.
Uso de Hojas de Estilo (QSS)
Para aplicar estilos personalizados, se pueden cargar archivos QSS desde los recursos del proyecto. Ejemplo de implementación:
QString hojaEstilo;
QFile archivoEstilo(":/res/qss/azul.qss");
archivoEstilo.open(QFile::ReadOnly);
if (archivoEstilo.isOpen()) {
hojaEstilo = QLatin1String(archivoEstilo.readAll());
this->setStyleSheet(hojaEstilo);
archivoEstilo.close();
}
Gestión de Recursos y Visualización de Imágenes
Para mostrar imágenes en la interfaz, siga estos pasos:
- Organice las imágenes en una carpeta dentro del directorio del proyecto.
- Agregue un archivo de recuross (.qrc) mediante el asistente de Qt Creator.
- Defina prefijos y asigne alias a los archivos para facilitar su gestión.
- En el editor de diseño, seleccione un widget (como QLabel) y configure la propiedad de estilo para usar la imagen.
Las propiedades de imagen en QSS incluyen: background-image (no se adapta automáticamente), border-image (se adapta con estiramianto) e image (se adapta sin estiramiento).
Creación y Personalización de la Barra de Herramientas (QToolBar)
En una alpicación con QMainWindow, se puede agregar una barra de herramientas y añadirle controles. Ejemplo para insertar botones:
barraHerramientas->addWidget(botonHerramienta1);
barraHerramientas->addWidget(botonHerramienta2);
barraHerramientas->addWidget(botonHerramienta3);
Propiedades importantes de QToolBar:
- movable: Permite mover la barra (predeterminado: true).
- allowedAreas: Define áreas donde se puede colocar (ej. Qt::LeftToolBarArea).
- iconSize: Establece el tamaño de los íconos.
- toolButtonStyle: Controla el estilo de los botones (ej. ToolButtonTextUnderIcon).
- floatable: Determina si la barra puede flotar como ventana independiente.
- popupMode: Configura el modo de menú emergente (ej. MenuButtonPopup).
Ejemplo para configurar un menú emergente en un botón:
QMenu *menuDesplegable = new QMenu(this);
menuDesplegable->addAction(QIcon(":/iconos/proyecto.png"), "Proyecto A", this, SLOT(ejecutarAccion()));
menuDesplegable->addAction(QIcon(":/iconos/proyecto.png"), "Proyecto B", this, SLOT(ejecutarAccion()));
botonHerramienta1->setMenu(menuDesplegable);
Navegación entre Páginas en una Misma Ventana
Uso de QStackedWidget
Este widget permite apilar múltiples páginas y mostrar solo una a la vez. Ejemplo básico:
// Crear páginas personalizadas
PaginaCustom *pagina1 = new PaginaCustom(this);
pagina1->establecerTitulo("Sección 1");
PaginaCustom *pagina2 = new PaginaCustom(this);
pagina2->establecerTitulo("Sección 2");
// Agregar páginas al widget apilado
widgetApilado->addWidget(pagina1);
widgetApilado->addWidget(pagina2);
widgetApilado->setCurrentIndex(0);
// Cambiar página mediante señales
connect(botonNavegacion1, &QPushButton::clicked, [this]() {
widgetApilado->setCurrentIndex(0);
});
connect(botonNavegacion2, &QPushButton::clicked, [this]() {
widgetApilado->setCurrentIndex(1);
});
Uso de QStackedLayout
Alternativamente, se puede emplear un layout apilado dentro de un contenedor. Para ello, cree un QWidget como contenedor y aplique el layout:
QStackedLayout *layoutApilado = new QStackedLayout;
layoutApilado->addWidget(pagina1);
layoutApilado->addWidget(pagina2);
contenedor->setLayout(layoutApilado);