[Relacionado con Qt UI] Qt establece que el color de fondo de un formulario o control sea transparente


Qt establece el color de apariencia y la transparencia de un formulario o control

1. Utilice QPalette para configurar la transparencia del formulario

En Qt, QPalettela clase (paleta) se usa para establecer el color de apariencia de un formulario o control. QPalettePrimero, debe incluir archivos de encabezado en su código QGui.

#include <QPalette>
// 或
#include <QGuiApplication>

Luego, agregue el siguiente código en el constructor para establecer la transparencia del formulario:

QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00, 0xff, 0x00, 0x00));
setPalette(pal);

Aquí, utilizamos QPalette::Backgroundpara establecer el color de fondo del formulario y configurarlo para que sea completamente transparente.

Efecto:
toda la ventana es transparente, pero los controles de la ventana son opacos. Por ejemplo, QLabelel control solo muestra texto y el color de fondo del control es transparente. El área de cliente del formulario también es completamente transparente.

2. Utilice el método setWindowOpacity

Otra forma de establecer la transparencia de un formulario es utilizar setWindowOpacityuna función.

setWindowOpacity(0.5);

Esto establecerá la transparencia del formulario al 50%.

3. Utilice el método setStyleSheet

También puede utilizar setStyleSheetmétodos para establecer la transparencia de un formulario o control.

setStyleSheet("background-color: rgba(255, 255, 255, 50);");

Aquí utilizamos el modelo de color RGBA, donde se utiliza A (Alfa) para establecer la transparencia.

4. Utilice los métodos setAttribute y setAutoFillBackground

setAttribute(Qt::WA_TranslucentBackground);
setAutoFillBackground(false);

Este método se utiliza a menudo para hacer que el fondo del formulario sea transparente y al mismo tiempo preservar la opacidad de los controles.

5. Utilice la clase QGraphicsOpacityEffect

QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect(this);
effect->setOpacity(0.5);
setGraphicsEffect(effect);

Aquí, creamos un QGraphicsOpacityEffectobjeto y configuramos su transparencia en 0,5.

6. Utilice banderas de ventana

setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);

Aquí, usamos la bandera de la ventana para ocultar los bordes del formulario y mantenerlo en la parte superior, afectando así indirectamente su transparencia.

Resumir

Los anteriores son seis métodos para configurar la transparencia de un formulario o control. Cada método tiene sus casos de uso y limitaciones, por lo que cuál elija dependerá de sus necesidades específicas.

Como dijo Bjarne Stroustrup en "El lenguaje de programación C++": "C++ es un lenguaje de programación multiparadigma que se puede utilizar para una variedad de estilos de programación". Estos métodos demuestran la flexibilidad de las bibliotecas C++ y Qt en el diseño de interfaces gráficas.

A través de estos métodos, no solo podemos lograr el efecto de transparencia del formulario, sino también tener una comprensión más profunda de cómo interactúa la biblioteca Qt con la interfaz gráfica subyacente y cómo afectar el rendimiento visual a través del código.

método Escena aplicable límite
QPaleta Fondo sencillo transparente El control es opaco
establecerVentanaOpacidad Todo el formulario es transparente. ninguno
establecer hoja de estilo Altamente personalizable Requiere familiaridad con CSS
setAttribute y setAutoFillBackground El control y la transparencia de fondo son diferentes. ninguno
QGraphicsOpacityEfecto Cambiar dinámicamente la transparencia Consumo adicional de CPU
signo de ventana Ocultar bordes de formulario Puede afectar otras propiedades de la forma.

Esperamos que este artículo le haya ayudado a comprender mejor cómo controlar la transparencia de formularios y controles usando Qt y C++, y cómo elegir el método que mejor se adapte a sus necesidades.

Conclusión

En nuestro viaje de aprendizaje de programación, la comprensión es un paso importante para avanzar a un nivel superior. Sin embargo, dominar nuevas habilidades e ideas siempre requiere tiempo y perseverancia. Desde un punto de vista psicológico, el aprendizaje suele ir acompañado de constantes pruebas, errores y ajustes, que es como si nuestro cerebro optimizara gradualmente su "algoritmo" para resolver problemas.

Por eso, cuando nos topamos con errores, debemos verlos como oportunidades para aprender y mejorar, no sólo como molestias. Al comprender y resolver estos problemas, no solo podemos corregir el código actual, sino también mejorar nuestras habilidades de programación y evitar cometer los mismos errores en proyectos futuros.

Animo a todos a participar activamente y mejorar continuamente sus habilidades de programación. Ya sea un principiante o un desarrollador experimentado, espero que mi blog sea útil en su viaje de aprendizaje. Si encuentra útil este artículo, puede hacer clic para marcarlo como favorito o dejar sus comentarios para compartir sus ideas y experiencias. También puede hacer sugerencias y preguntas sobre el contenido de mi blog. Cada me gusta, comentario, compartir y atención es el mayor apoyo para mí y la motivación para seguir compartiendo y creando.


Lea mi página de inicio de CSDN y desbloquee contenido más interesante: página de inicio de CSDN de Bubble
Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_21438461/article/details/132913944
Recomendado
Clasificación