Soporte de Threads en Módulos Qt
Hilos y el Módulo SQL
Una conexión a una base de datos sólo debe usarse desde el subproceso que la creó. Mover una conexión a otro hilo puede hacerse con QSqlDatabase::moveToThread().
Además, las librerías de terceros utilizadas por los QSqlDrivers pueden imponer restricciones adicionales al uso del Módulo SQL en un programa multihilo. Consulte el manual de su cliente de base de datos para más información
Pintar en hilos
QPainter puede utilizarse en un subproceso para pintar en QImage, QPrinter, QPicture, y (para la mayoría de las plataformas) QPixmap dispositivos de pintura. No es posible pintar sobre QWidgets. En macOS el diálogo de progreso automático no se mostrará si está imprimiendo desde fuera del hilo GUI.
Cualquier número de hilos puede pintar en un momento dado, sin embargo, sólo un hilo a la vez puede pintar en un dispositivo de pintura dado. En otras palabras, dos subprocesos pueden pintar al mismo tiempo si cada uno pinta sobre QImages distintas, pero los dos subprocesos no pueden pintar sobre el mismo QImage al mismo tiempo.
Hilos y procesamiento de texto enriquecido
QTextDocument, QTextCursor, y todas las clases relacionadas son reentrantes.
Tenga en cuenta que una instancia QTextDocument creada en el hilo GUI puede contener recursos de imagen QPixmap. Utilice QTextDocument::clone() para crear una copia del documento, y pasar la copia a otro hilo para su posterior procesamiento (como la impresión).
Los subprocesos y el módulo SVG
Las clases QSvgGenerator y QSvgRenderer del módulo QtSvg son reentrantes.
Hilos y clases compartidas implícitamente
Qt utiliza una optimización llamada compartición implícita para muchas de sus clases de valores, en particular QImage y QString. A partir de Qt 4, las clases compartidas implícitamente pueden copiarse de forma segura a través de hilos, como cualquier otra clase de valor. Son totalmente reentrantes. La compartición implícita es realmente implícita.
En la mente de mucha gente, la compartición implícita y el multithreading son conceptos incompatibles, debido a la forma en que se realiza el conteo de referencias. Qt, sin embargo, utiliza el conteo atómico de referencias para asegurar la integridad de los datos compartidos, evitando la corrupción potencial del contador de referencias.
Ten en cuenta que el conteo atómico de referencias no garantiza la seguridad de los hilos. Debe usarse un bloqueo apropiado cuando se comparte una instancia de una clase implícitamente compartida entre hilos. Este es el mismo requisito que se aplica a todas las clases reentrantes, compartidas o no. El conteo atómico de referencias, sin embargo, garantiza que un hilo trabajando en su propia instancia local de una clase implícitamente compartida es seguro. Recomendamos utilizar señales y ranuras para pasar datos entre hilos, ya que esto puede hacerse sin necesidad de ningún bloqueo explícito.
En resumen, las clases implícitamente compartidas en Qt 4 son realmente implícitamente compartidas. Incluso en aplicaciones multihilo, puedes usarlas con seguridad como si fueran clases simples, no compartidas y reentrantes basadas en valores.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.