Was ich versuche ist, ein Qwidget in ein anderes Fenster zu rendern (manuell mit einem QPainter)Qt: Wie erzwinge ich ein verstecktes Widget, um sein Layout zu berechnen?
Ich habe ein QWidget (w) mit einem Layout und einer Reihe von untergeordneten Steuerelementen. w ist versteckt. Bis w angezeigt wird, gibt es keine Layout-Berechnungen, die erwartet werden.
Als ich w->render(painter, w->mapToGlobal(QPoint(0,0))
anrufe, bekomme ich ein paar Kontrollen alle einander überlappen.
w->layout()->activate();w->layout()->update()
scheint nichts zu tun.
Gibt es eine Möglichkeit, das Layout zu zwingen, ohne w zeigt geschehen?
Verspäteter Dank, das funktioniert perfekt! – Chris
Beachten Sie, dass ein Widget nur dann sichtbar wird, wenn alle seine Vorfahren ebenfalls sichtbar sind. Wenn dies nicht der Fall ist, löst das Aufrufen von 'show()' das Problem hier möglicherweise nicht. Siehe meine Antwort unten für einen anderen Ansatz, der immer funktionieren sollte. – emkey08
@MathiasKunter Dennoch sollte angemerkt werden, dass Paint-Ereignisse perfekt zum "gezeigten" (aber nicht auf dem Bildschirm sichtbaren) Widget fließen, wenn Sie, sagen wir, ein paar Mausklicks einspeisen (im Gegensatz zum einfachen elternlosen Widget)! – mlvljr