Bonjour,

Je souhaite créer une DLL intégrant un QGraphicsView.

J'ai créé une application simple qui fait ce que je veux:
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
31
32
33
34
35
36
37
38
39
 
#include "mainwindow.h"
#include <QApplication>
#include <QgraphicsView>
#include <QgraphicsScene>
 
int AfficherRectangle(QGraphicsScene & scene, qreal x1, qreal y1, qreal x2, qreal y2, const QPen & pen = QPen())
{
    scene.addLine(x1,y1,x1,y2,pen);
    scene.addLine(x1,y2,x2,y2,pen);
    scene.addLine(x2,y2,x2,y1,pen);
    scene.addLine(x2,y1,x1,y1,pen);
 
    return 0;
}
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    QGraphicsScene scenePrinc;
 
    QColor rouge(255,0,0);
    QColor bleu(0,0,255);
    QColor vert(0,255,0);
 
    QPen pen;
    pen.setColor(vert);
    pen.setWidth(5);
 
    AfficherRectangle(scenePrinc, -20, -20, 100, 50, pen);
 
    scenePrinc.addText("Hello, world!");
 
    QGraphicsView view(&scenePrinc);
    view.show();
 
    return a.exec();
}
Ça fonctionne...

Maintenant, je voudrais que cette fenêtre graphique soit une DLL.
J'ai créé un projet Bibliothèque et ai recopié mon code.

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
 
QT       -= gui
 
TARGET = Essai_DLL
TEMPLATE = lib
 
DEFINES += ESSAI_DLL_LIBRARY
 
SOURCES += essai_dll.cpp
 
HEADERS += essai_dll.h\
        essai_dll_global.h
 
unix {
    target.path = /usr/lib
    INSTALLS += target
}
header:
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
 
#ifndef ESSAI_DLL_H
#define ESSAI_DLL_H
 
#include "essai_dll_global.h"
 
class ESSAI_DLLSHARED_EXPORT Essai_DLL
{
 
public:
    Essai_DLL();
 
    int AfficherRectangle(QGraphicsScene & scene, qreal x1, qreal y1, qreal x2, qreal y2, const QPen & pen = QPen());
    int main(void);
};
 
#endif // ESSAI_DLL_H
fichier cpp
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
#include "essai_dll.h"
//#include <QApplication>
#include <QgraphicsView>
#include <QgraphicsScene>
 
Essai_DLL::Essai_DLL()
{
    main();
}
 
int Essai_DLL::AfficherRectangle(QGraphicsScene & scene, qreal x1, qreal y1, qreal x2, qreal y2, const QPen & pen = QPen())
{
    scene.addLine(x1,y1,x1,y2,pen);
    scene.addLine(x1,y2,x2,y2,pen);
    scene.addLine(x2,y2,x2,y1,pen);
    scene.addLine(x2,y1,x1,y1,pen);
 
    return 0;
}
 
int Essai_DLL::main(void)
{
    QApplication a(argc, argv);
 
    QGraphicsScene scenePrinc;
 
    QColor rouge(255,0,0);
    QColor bleu(0,0,255);
    QColor vert(0,255,0);
 
    QPen pen;
    pen.setColor(vert);
    pen.setWidth(5);
 
    AfficherRectangle(scenePrinc, -20, -20, 100, 50, pen);
 
    scenePrinc.addText("Hello, world!");
 
    QGraphicsView view(&scenePrinc);
    view.show();
 
    return a.exec();
}
Il me met un défaut:
Essai_DLL\essai_dll.cpp:2: erreur : QgraphicsView: No such file or directory
#include <QgraphicsView>
^

Que dois-je ajouter pour qu'il trouve la bibliothèque QgraphicsView ?

Merci