Tengo un widget personalizado para emular consejos de globos. Para visualizarse correctamente, el widget depende del atributo QWidget Qt::WA_TranslucentBackground
. Mi aplicación debería funcionar en todas las plataformas principales (Windows XP, Windows 7, Linux, Mac), así que me preocupa un poco: ¿este atributo está disponible en todas las plataformas principales? Si no, ¿puedo consultar si es? testAttribute()
no hace eso. Solo devuelve si el atributo se ha establecido, no si la configuración tiene un efecto.Qt :: WA_TranslucentBackground disponible en todas partes?
Respuesta
Esto debería funcionar con la única excepción de Linux sobre X11 cuando esto está configurado para no admitir ARGB. Consulte la documentación QWidget:
Creación translúcido de Windows
Desde Qt 4.5, ha sido posible crear ventanas translúcidas con regiones en sistemas de ventanas que apoyan la composición.
Para activar esta función en un widget de nivel superior, establezca su Qt :: WA_TranslucentBackground atributo con setAttribute() y garantizar que su fondo está pintado con colores no opacos en las regiones que desea ser parcialmente transparente .
notas sobre la plataforma:
X11: Esta función se basa en el uso de un servidor X que soporta visuales ARGB y un gestor de ventanas de composición.
Windows: El widget debe tener el indicador de ventana Qt :: FramelessWindowHint establecido para que la translucidez funcione.
Considere leer también el párrafo titulado "Transparencia y doble almacenamiento en búfer", podría ser interesante.
Para Linux debe comprobar si la composición está habilitado:
bool QX11Info::isCompositingManagerRunning() [static]
por ejemplo,
#ifdef Q_WS_X11
if(QX11Info::isCompositingManagerRunning())
setAttribute(Qt::WA_TranslucentBackground);
#endif
Esta pregunta es antigua, pero podría ayudar a alguien.
Y, para cualquiera que entre en Google, si necesita soportar escritorios no compilados para algo como un OSD redondeado o un globo emergente, el Qt [ShapedClock] (https://doc.qt.io/ qt-5/qtwidgets-widgets-shapedclock-example.html) ejemplo demuestra cómo usar 'setMask' para producir una ventana no cuadrada sin composición. – ssokolow
Tenga en cuenta que a veces para que 'Qt :: WA_TranslucentBackground' funcione en Linux sin' setMask', también debe habilitar algunos atributos más y un indicador de ventana. https://stackoverflow.com/a/30596357/999943 – phyatt
- 1. Ocultar cursor en todas partes
- 2. ¿La tarea de rastrillo de la gema está disponible en todas partes?
- 3. Android OpenGL ES ¿Soporte en todas partes?
- 4. ¿Por qué "android:" en todas partes?
- 5. WordPress con phpMyAdmin - 404 en todas partes
- 6. Esperando a que esté disponible un servicio DBus en Qt
- 7. ¿Es posible reemplazar el "operador new() global" en todas partes?
- 8. ¿Hay alguna manera de evitar $ this-> en todas partes?
- 9. ¿Debo usar los prefijos std :: y boost :: en todas partes?
- 10. Team Explorer en todas partes con autenticación Eclipse
- 11. ¿QT está disponible para plataformas Android y iPhone?
- 12. Borrar/restablecer un modelo en qt (eliminar todas las filas)
- 13. ¿Cómo almacena su base de datos de fragmentos personales para usarla en todas partes (trabajo, etc.)?
- 14. El HttpContext.Current.Cache está disponible para todas las sesiones
- 15. Haciendo que la configuración esté disponible para todas las clases
- 16. Fundición (flotador) en todas partes en C#. ¿Es mejor simplemente trabajar en dobles?
- 17. Comprobando todas las conexiones Qt de señal/ranura
- 18. Evento con un clic en todas partes en la página fuera del div específico
- 19. ¿Mato a un gatito cada vez que uso struct en todas partes en lugar de clase?
- 20. ¿Es mejor crear una nueva JdbcTemplate en cada consulta o inyectar una sola en todas partes?
- 21. delegar en partes privadas
- 22. ¿Cómo importar partes específicas de varias partes en MEF?
- 23. qt "resource" string
- 24. Un widget qt con fondo totalmente transparente
- 25. usando partes de Boost
- 26. ¿Alguna razón para NO dar una bofetada a la palabra clave "sincronizada" en todas partes?
- 27. ¿Por qué una función con modificador protegido puede ser anulada y accesible en todas partes?
- 28. Consejos sobre cómo implementar código C++ para trabajar en todas partes
- 29. ¿Por qué el cacao no usa el mismo estilo de declaración enum en todas partes?
- 30. ¿Pones consultas de Linq2SQL por todas partes o en clases de DAL dedicadas?
¿Qué tan común o raro es que un Linux contemporáneo no admita ARGB? ¿Puedo de alguna manera consultarlo? –
No creo que tenga problemas con hardware/distribuciones recientes. De todos modos, debe obtener información utilizando xdpyinfo o mirando el archivo de configuración xorg.conf. Es posible que tenga algunos problemas con los sistemas embebidos de Linux. Esto da algo más: http://stackoverflow.com/questions/2434511/what-pixel-format-does-x-server-use. –