Quantcast
Channel: Qt DevNet forums: Installation and Deployment
Viewing all articles
Browse latest Browse all 2113

PDF printing on MAC does not work outside Qt creator?

$
0
0
I’ve created a plotting program and want to let the users to print on paper or PDF.
 When I run my program from inside Qt Creator, PDF printing is ok. However, if I create a bundle, printing from the bundle does not work!
 The problem is that the painter does not begin with the printer (returns false) I’ve made my tests using Qt 5.2.1. I’ve created the bundle using the macdeployqt utility A tiny program showing this. When run from inside Qt creator creates the PDF and emits the “image printed” message. Otherwise does not create the PDF and emits the “some errors occurred” message. Here is the tiny program:   ***  Pro file **** #------------------------------------------------- # # Project created by QtCreator 2013-08-17T18:00:40 # #-------------------------------------------------   QT       += core gui printsupport widgets   TARGET = bugTest TEMPLATE = app SOURCES += main.cpp    mainwindow.cpp HEADERS  += mainwindow.h   *** main file *** #include "mainwindow.h" #include <QApplication>   int main(int argc, char *argv[]) {     QApplication a(argc, argv);     MainWindow w;     w.show();     return a.exec(); }    *** mainwindow.h *** #ifndef MAINWINDOW_H #define MAINWINDOW_H   #include <QMainWindow> #include <qpushbutton.h>   class MainWindow : public QMainWindow {     Q_OBJECT     public:     explicit MainWindow(QWidget *parent = 0);     ~MainWindow();     void paintEvent(QPaintEvent *ev);   private:     QPushButton *btn; private slots:     void btnClicked(); };   #endif // MAINWINDOW_H   *** mainwindow.cpp ******* #include "mainwindow.h" #include <QPainter> #include <QPaintEvent> #include <QPrinter> #include <QMessageBox>   MainWindow::MainWindow(QWidget *parent) :     QMainWindow(parent) {   btn = new QPushButton("doPdf", this);   move(0,0);   btn->adjustSize();   btn->move(100,15);   connect(btn,SIGNAL(clicked()),this,SLOT(btnClicked())); }   MainWindow::~MainWindow() { } void MainWindow::btnClicked(){     bool ok;     QRect r=QRect(10,10,80,50);     QPrinter printer;     QPainter painter;     printer.setOutputFileName("print.pdf");     printer.setOutputFormat(QPrinter::PdfFormat);     ok=printer.isValid();     ok=painter.begin(&printer);     if(ok)       painter.drawRect(r);     if(ok)       QMessageBox::information(this,"","image printed on \"print.pdf\"");     else       QMessageBox::information(this,"","Some error occurred!"); } void MainWindow::paintEvent(QPaintEvent * ev){     QRect r=QRect(10,10,80,50);     QPainter painter(this);     painter.drawRect(r); }

Viewing all articles
Browse latest Browse all 2113

Trending Articles