Для печати содержимого виджета используй
C++ (Qt)
void QWidget::render( QPaintDevice* target, const QPoint& targetOffset = QPoint(), const QRegion& sourceRegion = QRegion(), RenderFlags renderFlags = RenderFlags( DrawWindowBackground | DrawChildren ) )
.
В качестве target задействуй QPrinter.