есть стандартный виджет препросмотра - QPrintPreviewDialog .
у него есть сигнал paintRequested(QPrinter*) который надо подключить к чему-либо, что будет способно что-то нарисовать на этом самом QPrinter*. Испуская этот сигнал виджет препросмотра хочет что бы ему там нарисовали, что собственно ему отображать и потом печатать.
У техт-браузера и текст-едитора есть метод print(QPrinter *). в этот метож надо подсунуть то, на чем надо "нарисовать себя".
Рисует он соответсвенно "то, что в него положено" - как plain-text так и rtf/html.
Это и делается в void printForm::printPreviewNeeds(QPrinter *_printer).
QTextEdit *cTextEdit;
QPrintPreviewDialog *prDialog;
t_printForm::t_printForm(QObject *parent) :
QWidget(parent)
{
...
cTextEdit = new QTextEdit();
...
QPushButton *doPreviewAndPrint= new QPushButton();
doPreviewAndPrint->setText("Препросмотр\n и печать");
QObject::connect(doPreviewAndPrint,SIGNAL(clicked()),this,SLOT(printPreview()));
...
prDialog = new QPrintPreviewDialog(new QPrinter(QPrinter::HighResolution));
connect(prDialog,SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreviewNeeds(QPrinter*)));
...
}
...
//--------------------------------------------------------------------------
//[SLOT]
void t_printForm::printPreview()//запустить окно предварительной печати
{
prDialog->exec();
}
...
//--------------------------------------------------------------------------
//[SLOT]
void t_printForm::printPreviewNeeds(QPrinter *_printer)
{
cTextEdit->print(_printer);
}
А вообще - не ленитесь читать подсистему помощи QAssistant - там довольно понятно изложено. пусть и на английском...
Это все выше практически 1:1 передрано с мануалов и примеров кода оттуда.
Удачи