Hi
I want to take a print a page in QML. I checked this link : https://forum.qt.io/topic/57861/solv...a-print-in-qml , but I have some errors.


Error


Qt Code:
  1. int main(int argc, char *argv[])
  2. {
  3. QApplication app(argc, argv);
  4.  
  5. QQmlApplicationEngine engine;
  6. QtWebEngine::initialize();
  7. //For QML
  8. pr print;
  9. engine.rootContext()->setContextProperty("PRINT", &print);
  10.  
  11.  
  12. engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
To copy to clipboard, switch view to plain text mode 

pr.h:
Qt Code:
  1. #ifndef PR_H
  2. #define PR_H
  3.  
  4. #include <QObject>
  5. #include <QVariant>
  6.  
  7. class pr : public QObject
  8. {
  9. Q_OBJECT
  10.  
  11. public:
  12. pr();
  13.  
  14. public:
  15.  
  16. Q_INVOKABLE void print(QVariant data);
  17.  
  18.  
  19. };
  20.  
  21. #endif // PR_H
To copy to clipboard, switch view to plain text mode 

pr.cpp:
Qt Code:
  1. #include "pr.h"
  2. #include <QtPrintSupport/QPrinter>
  3. #include <QPainter>
  4. #include <QtPrintSupport/QPrintDialog>
  5. #include <QPixmap>
  6. #include <QImage>
  7. #include <qDebug>
  8.  
  9. pr::pr()
  10. {
  11.  
  12. }
  13.  
  14. void pr::print(QVariant data)
  15.  
  16. {
  17.  
  18.  
  19. QImage img = qvariant_cast<QImage>(data);
  20. QPrinter printer;
  21. QPrintDialog *dlg = new QPrintDialog(&printer,0);
  22. if(dlg->exec() == QDialog::Accepted) {
  23. QPainter painter(&printer);
  24. painter.drawImage(QPoint(0,0),img);
  25. painter.end();
  26. }
  27.  
  28.  
  29. }
To copy to clipboard, switch view to plain text mode