IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Créer une DLL intégrant un composant QGraphicsView

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Créer une DLL intégrant un composant QGraphicsView
    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

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 601
    Points
    188 601
    Par défaut


    Dans ton fichier de projet, tu retires le module Qt GUI, c'est voulu ?

    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Salut,

    Je débute juste avec Qt.
    C'est le générateur automatique de projet de QtCreator qui m'a mis ça...
    J'ai essayé de remplacer le - par un + et ça n'a rien changé...

    Cordialement,

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    Finalement, j'ai réussi à générer une DLL...

    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       += core 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
    18
    19
     
    #ifndef ESSAI_DLL_H
    #define ESSAI_DLL_H
     
    #include "essai_dll_global.h"
    #include <QgraphicsView>
    #include <QgraphicsScene>
     
    class ESSAI_DLLSHARED_EXPORT Essai_DLL
    {
     
    public:
        Essai_DLL();
     
        int AfficherRectangle(QGraphicsScene & scene, qreal x1, qreal y1, qreal x2, qreal y2, QPen & pen);
        int main(void);
    };
     
    #endif // ESSAI_DLL_H
    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
     
    #include "essai_dll.h"
     
    Essai_DLL::Essai_DLL()
    {
        main();
    }
     
    int Essai_DLL::AfficherRectangle(QGraphicsScene & scene, qreal x1, qreal y1, qreal x2, qreal y2, QPen & pen)
    {
        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)
    {
        QGraphicsScene scenePrinc;
     
        QColor rouge(255,0,0);
        QColor vert(0,255,0);
        QColor bleu(0,0,255);
     
        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 0;
    }
    Prochaine étape: essayer d'utiliser la DLL
    http://qt.developpez.com/faq/?page=p...eque-dynamique

    Cordialement,

Discussions similaires

  1. Comment créer une dll à parti d'un programme en C
    Par laetous dans le forum Windows
    Réponses: 5
    Dernier message: 02/09/2006, 11h05
  2. [VB6]comment créer une dll
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/04/2006, 14h32
  3. Comment (ou peut on) créer une DLL .NET ?
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 4
    Dernier message: 02/04/2006, 15h54
  4. Comment créer une dll Win32 sous Delphi ?
    Par Mickey.jet dans le forum Langage
    Réponses: 8
    Dernier message: 16/06/2005, 15h38
  5. [MFC]Créer une DLL BIS
    Par Furtif_00 dans le forum MFC
    Réponses: 5
    Dernier message: 28/06/2004, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo