Lo que intento hacer es renderizar un qwidget en una ventana diferente (manualmente usando un QPainter)Qt: ¿Cómo forzar un widget oculto para calcular su diseño?
Tengo un QWidget (w) con un diseño y un grupo de controles secundarios. w está escondido Hasta que se muestre w, no hay cálculos de diseño, lo que se espera.
Cuando llamo al w->render(painter, w->mapToGlobal(QPoint(0,0))
, obtengo un grupo de controles superpuestos entre sí.
w->layout()->activate();w->layout()->update()
parece que no hace nada.
¿Hay alguna manera de forzar el diseño sin mostrar w?
¡Gracias tardías, eso funciona perfectamente! – Chris
Tenga en cuenta que un widget solo será visible si todos sus antecesores también son visibles. Si este no es el caso, llamar a 'show()' podría no resolver el problema aquí. Vea mi respuesta a continuación para un enfoque diferente que siempre debería funcionar. – emkey08
@MathiasKunter Aún así, debe tenerse en cuenta que los eventos de pintura fluyen perfectamente al widget "mostrado" (pero no visible en la pantalla) si, por ejemplo, le da algunos clics de ratón (a diferencia del widget simple sin padres). – mlvljr