Созрел вопрос, связанный с печатью виджета и всего того, что в нем находится.
т.е. есть какой то виджет, внутрь него было понатыкано еще куча всяких кнопочек, лайоутов и прочей енрунды.
При помощи стандартного диалога QPrintPreviewDialog хочу сделать preview того, что должно отправиться на печать. Делаю я это стандартным образом, что описан в примерах qt.
QWidget *w_pMainWidget - внутренняя переменная класса TWidgetPrinter, просто для т.ч. запомнить указатель на тот виджет, который хочу распечатать.
C++ (Qt)
void TWidgetPrinter::printPreview( QWidget *widget_ )
{
w_pMainWidget = widget_;
QPrinter printer;
QPrintPreviewDialog preview( &printer, widget_ );
connect( &preview, SIGNAL(paintRequested(QPrinter *) ),
this, SLOT(printDocument(QPrinter *)));
preview.exec();
}
void TWidgetPrinter::printDocument( QPrinter *printer_ )
{
if ( w_pMainWidget != NULL )
w_pMainWidget->render( printer_ );
}
Но, на preview выводится почему то только один единственный виджет, который был последним при конструировании родительского виджета.
Если же в функцию printPreview передать указатель на к-либо простой виджет типа кнопки - то он нормально отрисовывается на preview.
Хотелось бы конечно чтобы отрисовывались все виджеты рекурсивно, начиная с указанного.
В документации к флагам используемым в функции render примерно так и написано:
QWidget::DrawChildren:
If you enable this option, the widget's children are rendered recursively into the target. By default, this option is enabled.
Но, что то никакой рекурсией не пахнет вовсе...
Имею следующий виджет:
а получаю вот это:
Что делать и как распечатать рекурсивно все элементы, входящие в виджет ?
Кто то наверняка уже сталкивался с подобной задачей...