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
int main(int argc, char *argv[])
{
QQmlApplicationEngine engine;
QtWebEngine::initialize();
//For QML
pr print;
engine.rootContext()->setContextProperty("PRINT", &print);
engine.
load(QUrl(QStringLiteral
("qrc:/main.qml")));
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
QtWebEngine::initialize();
//For QML
pr print;
engine.rootContext()->setContextProperty("PRINT", &print);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
To copy to clipboard, switch view to plain text mode
pr.h:
#ifndef PR_H
#define PR_H
#include <QObject>
#include <QVariant>
{
Q_OBJECT
public:
pr();
public:
};
#endif // PR_H
#ifndef PR_H
#define PR_H
#include <QObject>
#include <QVariant>
class pr : public QObject
{
Q_OBJECT
public:
pr();
public:
Q_INVOKABLE void print(QVariant data);
};
#endif // PR_H
To copy to clipboard, switch view to plain text mode
pr.cpp:
#include "pr.h"
#include <QtPrintSupport/QPrinter>
#include <QPainter>
#include <QtPrintSupport/QPrintDialog>
#include <QPixmap>
#include <QImage>
#include <qDebug>
pr::pr()
{
}
{
QImage img
= qvariant_cast<QImage>
(data
);
if(dlg
->exec
() == QDialog::Accepted) { painter.
drawImage(QPoint(0,
0),img
);
painter.end();
}
}
#include "pr.h"
#include <QtPrintSupport/QPrinter>
#include <QPainter>
#include <QtPrintSupport/QPrintDialog>
#include <QPixmap>
#include <QImage>
#include <qDebug>
pr::pr()
{
}
void pr::print(QVariant data)
{
QImage img = qvariant_cast<QImage>(data);
QPrinter printer;
QPrintDialog *dlg = new QPrintDialog(&printer,0);
if(dlg->exec() == QDialog::Accepted) {
QPainter painter(&printer);
painter.drawImage(QPoint(0,0),img);
painter.end();
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks