Bonjour à tous,

Je suis débutant sur QT et j'aimerais créer un programme qui convertie du code html en pdf.
Pour ce faire j'utilise QWebPage pour interpréter le code html et QPrinter pour l'export au format PDF.

Alors j'ai deux classes : webview qui se charge d'interpréter tout ce qui est relative à QWebpage et Print qui s'occupe de QPrinter.


Dans mon main, le code ressemble à ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
Print *pdf = new Print(args);
    webview *nav = new webview();
    nav->setPrinter(pdf->getPrinter());
 
    if(nav->load(args) == false) {
        qDebug() << "can't load page";
        return 0;
    }
 
    //on lie le signal de fin de chargement de page de la webview au slot qui va déclencher l'impression
    QObject::connect(nav->getFrame(), SIGNAL(loadFinished(bool)), nav, SLOT(printPDF()));
et voici la belle erreur que j'ai :

QObject::connect: No such slot QObject::printPDF() in ../htmltopdf/main.cpp:43
Voici à quoi ressemble mon webview.h (c'est lui qui contient le slot censé recevoir le signale).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef WEBVIEW_H
#define WEBVIEW_H
 
#include <QRegularExpression>
#include <QWebFrame>
#include <QWebPage>
#include <QPrinter>
#include <QDebug>
 
#include "arguments.h"
 
class webview : public QObject
{
 
public:
    webview();
    ~webview();
    bool load(Arguments *args);
    QWebFrame* getFrame() { return frame;}
    void setPrinter(QPrinter *p) { printer = p;}
 
public slots:
    void printPDF();
private:
    QWebPage *page;
    QWebFrame *frame;
    QPrinter *printer;
};
 
#endif // WEBVIEW_H
et donc ma méthode print pdf ressemble tout bêtement à cela :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
void webview::printPDF()
{
    if(printer != 0)
        frame->print(printer);
}