#include class PrintTest : public QWidget { Q_OBJECT public: PrintTest(QWidget *parent = 0, Qt::WFlags flags = 0) : QWidget(parent, flags) { mPrinter = new QPrinter; printPDFButton = new QPushButton("Print PDF"); printPreviewButton = new QPushButton("Print Preview"); connect(printPDFButton, SIGNAL(clicked()), this, SLOT(on_printPDFButton_clicked())); connect(printPreviewButton, SIGNAL(clicked()), this, SLOT(on_printPreviewButton_clicked())); QHBoxLayout *vL = new QHBoxLayout; vL->addWidget(printPDFButton); vL->addWidget(printPreviewButton); setLayout(vL) ; } private slots:; void on_printPDFButton_clicked() { //mPrinter->setPrinterName("CutePDF Writer"); mPrinter->setOutputFormat(QPrinter::PdfFormat); mPrinter->setOutputFileName("Test.pdf"); mPrinter->setFullPage(true); startPaint(mPrinter); } void on_printPreviewButton_clicked() { mPrinter->setOutputFormat(QPrinter::NativeFormat); QPrintPreviewDialog printPreviewDialog(mPrinter, this); printPreviewDialog.setWindowFlags ( Qt::Window ); connect(&printPreviewDialog, SIGNAL(paintRequested(QPrinter *)), this, SLOT(startPaint(QPrinter *))); printPreviewDialog.exec(); } void startPaint(QPrinter *printer) { QPainter painter; painter.begin(printer); // Start Paint QFont font("Arial", 10); painter.setFont(font); painter.translate(100, 100); painter.drawRect(0, 0, 100, 20); painter.drawText(0, 0, 100, 20, Qt::AlignRight, "This is a Test10"); painter.end(); // End Paint } private: QPrinter *mPrinter; QPushButton *printPDFButton, *printPreviewButton; }; #include "main.moc" int main(int argc, char *argv[]) { QApplication a(argc, argv); PrintTest w; w.show(); return a.exec(); }