Tenemos una aplicación MDI, donde no se abre ningún formulario principal de entrada.
Lo que queremos lograr es al marco de la aplicación principal, establecerle una imagen de fondo. O sea que cuando yo no tenga ningún formulario abierto, se vea el marco principal de la aplicación con esa imagen de fondo (y no el clásico fondo gris)
Seguramente esto es posible mediante Javascript o CSS. Alguien ya lo desarrolló o sabe como hacerlo?
El CSS para el fondo del Marco es:
QMainWindow {
background-image: url(logo_fondo.png);
background-repeat: no-repeat;
background-attachment: fixed;
background-position: center;
background-origin: content;
}
logo_fondo.png puedes añadirlo al proyecto como adjunto y de esta forma se copiará a la caché del Usuario
Antes de fijar el CSS en la aplicación ejecutas “Cambiar directorio por defecto (sysCacheClientPath)” para que la url() del CSS encuentre las imágenes
Por supuesto, el nombre de logo_fondo.png puede estar en una Constante o Variable Global del proyecto e incluso tener guardado un String en Base64 con la imagen codificada.
Como ya habrás deducido el CSS background-image solo funciona en el Modo de arranque SDI. En modo MDI y TAB aparece un fondo opaco de color gris oscuro y algo más claro respectivamente. Son las cosas de Velneo.
Hay una pregunta a Soporte sobre este curioso comportamiento, en cuanto respondan os lo cuento.
Yo de momento trabajo siempre en modo TAB cuando hay Vistas abiertas y cuando no hay ninguna Vista activa en la Aplicación cambio a modo SDI para que aparezca el fondo con algún Logotipo. Es un Modo MIXTO.
Al Modo MDI, de momento, no le veo ventajas frente a los otros.
Usa QToolBar { background-color: <color>; } para hacer opacas las Toolbar.
Hago una corrección a lo dicho anteriormente.
En Modo TAB es posible establecer un Fondo mediante el CSS:
QTabWidget::pane {
background-image: url(<imagen.png>);
background-repeat: no-repeat;
background-attachment: fixed;
background-position: center;
background-origin: content;
}
Ya solo nos queda cómo establecer Fondo en Modo MDI.