내가 뭘 하려는지 QWindget을 다른 창 (수동으로 QPainter 사용)에 렌더링하는 것입니다.Qt : 숨겨진 위젯이 레이아웃을 계산하도록 강제하는 방법?
레이아웃과 여러 개의 자식 컨트롤이있는 QWidget (w)가 있습니다. w가 숨겨져 있습니다. w가 표시 될 때까지 예상되는 레이아웃 계산이 없습니다.
w->render(painter, w->mapToGlobal(QPoint(0,0))
을 호출하면 서로 겹치는 컨트롤이 하나씩 표시됩니다.
w->layout()->activate();w->layout()->update()
은 아무 것도하지 않는 것 같습니다.
w를 표시하지 않고 레이아웃을 강제로 수행 할 수있는 방법이 있습니까?
감사합니다. 완벽하게 작동합니다! – Chris
위젯은 모든 조상이 표시 될 때만 표시됩니다. 이것이 사실이 아니라면,'show()'를 호출하면 문제가 해결되지 않을 수도 있습니다. 항상 작동해야하는 다른 접근 방식에 대한 내 대답을 참조하십시오. – emkey08
@MathiasKunter 그래도 주목해야 할 점은 페인트 위저드가 평범한 부모없는 위젯과는 달리 마우스로 몇 번의 클릭 만하면 페인트 이벤트가 완벽하게 "표시된"(그러나 화면에 보이지 않는) 위젯으로 흐르고 있다는 것입니다! – mlvljr