Finally. This code works fine.
void onPrint(QPrinter* printer)
{
QPagedPaintDevice* device = printer;
QPainter painter;
painter.begin(device);
int w = device->width();
int h = device->height();
painter.drawLine(0,0,w,h);
painter.drawLine(0,h,w,0);
painter.drawEllipse(QPointF(w/2, h/2), w/10, w/10);
painter.drawText(0, h, "pixels");
printer->newPage();
painter.end();
}