Pregunta

Tengo un QMainWindow con tres widgets que se promueven dentro de una clase que contiene una subclase QThread. Cada uno de ellos en un sorteo QImage local en su QThread rexpective que se envía con una señal una vez que su trazado y luego vuelve llamando actualización (ejemplo mandlebrot) de la ranura. Es este seguro o peligroso? Ellos no comparten ningún dato, al menos ninguno que estoy generando y me pregunto qué datos podrían ser compartir que está fuera de mi gama de codificación es decir, que se genera por Qt automáticamente.

¿Fue útil?

Solución

la documentación :

QPainter se puede utilizar para pintar en los dispositivos de pintura QImage, QPrinter, y QPicture. No se admite la pintura en QPixmaps y QWidgets. En Mac OS X el diálogo de progreso automático no se mostrará si está imprimiendo desde fuera del hilo de interfaz gráfica de usuario.

Cualquier número de hilos puede pintar en cualquier momento dado, sin embargo sólo un hilo a la vez puede pintar en un dispositivo de pintura dada. En otras palabras, dos hilos pueden pintar al mismo tiempo si cada pinturas Onto QImages separados, pero los dos hilos no pueden pintar en la misma QImage al mismo tiempo.

Tenga en cuenta que en los sistemas X11 sin soporte FontConfig, Qt no puede hacer fuera de texto de la interfaz gráfica de usuario de hilo. Se puede utilizar la función QFontDatabase :: supportsThreadedFontRendering () para detectar si o no representación de fuentes se puede utilizar fuera del hilo GUI.

Así que, mientras usted tiene cuidado sobre el tema de la fuente en X11, no utiliza ningún Pixmaps o cursores (que se implementan como Pixmaps), y no trate de pintar en la misma imagen al mismo tiempo desde múltiples hilos ... debería funcionar.

Tenga en cuenta que en el ejemplo de Mandelbrot, el QImage se pasa por valor sobre la señal (implícitamente compartido), lo que significa que si cualquiera de los intentos de rosca una escritura que tendrá su propia copia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top