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

Qt Quick Discussion :

DLL d'éléments QML [Débuter]


Sujet :

Qt Quick

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut DLL d'éléments QML
    Bonjour,

    J'étudie l'utilisation du QML dans un projet. Il faudrait que je fasse une DLL contenant des composants QML personnalisés, à réutiliser pour créer des IHM (utilisation "desktop").

    La plupart des tutoriels montrent comment faire QML => C++ ou C++ => QML. Or là, il s'agirait de QML => C++ => QML ou C++. Dans mon idée, il faudrait que je regroupe mes éléments QML grâce à qmlRegisterType() (qui normalement, sert à transformer une classe C++ en élément QML). Donc faudrait faire une classe par .qml ? J'ai rien trouvé pour faire ça.

    Est-ce que l'idée-même vous semble farfelue ? Est-ce que vous pouvez m'expliquer comment m'y prendre ? (Est-ce que ce serait pas un plug-in en fait que je chercherais à faire ? Pas compris à quoi ça sert).

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Est-ce que ce serait pas un plug-in en fait que je chercherais à faire ?
    C'est bien cela.

    J'en ai fait un dans QExtend http://projets.developpez.com/projec...anches/dev/qml

    Je m'étais basé sur les exemples fournie par Qt.

    Le plu important est que ta dll soit dans un répertoire avec un fichier qmldir qui spécifie que ta dll et un plugin.

    Dans mon cas ce fichier contiens

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Merci de ta réponse,

    Effectivement dans l'idée tu as fait un plugin "classique" avec une implémentation C++. Ce que je cherche à faire c'est un plugin QML.

    Par exemple, j'ai fait une liste déroulante, DropDownList.qml (qui utilise un autre composant créé, MenuButton.qml). Cette liste déroulante va me servir dans des IHM, à travers un plugin qui la mettra à disposition.

    Ca semble plus naturel de simplement copier les QML dont je veux me servir dans mon projet, mais ce n'est pas ce qu'on me demande. Un simple "#include "mesqml.h" pour utiliser dans le C++, ou un "import MesQML 1.0" pour utiliser dans un .qml...

    Ce que j'aimerais savoir, c'est comment faire un plugin donc, à partir de ma DropDownList.qml ?
    J'imagine que je dois faire un projet Application QtQuick, avec mes QML dans un fichier de ressources (normal), une classe héritant de QDeclarativeExtensionPlugin pour créer le plugin, et il me manque la partie entre cette classe et mes .qml . Je vois pas comment faire, et si c'est aberrant de le faire.

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Dans le plugin, j'intègre QExtend.qml

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DeclarativeComponent comp(engine);	
     QFile f(":/QExtend.qml");
     f.open(QIODevice::ReadOnly);
     QByteArray r = f.readAll();
     comp.setData(r,QUrl());
    engine->rootContext()->setContextProperty("QExtend",  comp.create());

    Pour mon cas c'est un object globale. Mais tu peux normalement le référencer pour être instanciable dans QML.

    Si c'est juste des .qml, il me semble que tu peux les mettre dans le répertoire du plugin et les référencer dans qmldir. Et donc pas besoin de faire de dll.
    Mais je n'en suis plus sure.

    http://qt.developpez.com/doc/latest/...-a-qmldir-file

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Tu m'as passé justement le lien sur lequel je suis tombé après mon précédent post

    Je me demande encore si en faisant comme ça, les .qml sont compilés dans l'application qui les utilise (pas question de les fournir à côté). Je vais voir si j'arrive à tester ça rapidement.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par Troudhyl Voir le message
    pas question de les fournir à côté.
    Dans ce cas je pense (à vérifier) qu'il te faut faire une dll en les ajoutant sous forme de ressource et en les référançant dans le context qml. En gros ce que j'ai fait avec QExtend mais sans l'instanciation de l'objet.
    Mais il te faudra un répertoire avec la dll et le fichier qmldir.

    Tu peux normalement aussi mettre les fichier qml en ressource de ton appli et les utilisé directement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. où trouver ces éléments : libglade-2.0.0.dll et libxml2.dll ?
    Par clavier12AZQSWX dans le forum Py2exe
    Réponses: 2
    Dernier message: 24/03/2011, 17h21
  2. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  3. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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