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 :

qmlRegisterType : comment ajouter le type c++ dans le QML ?


Sujet :

Qt Quick

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 8
    Points : 5
    Points
    5
    Par défaut qmlRegisterType : comment ajouter le type c++ dans le QML ?
    Salut à tous !

    J'ai un petit code c++ que je veux faire communiquer avec un petit code QML. Je souhaite utiliser qmlRegisterType pour faire ce genre d'appel en QML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text : monTypePartagé.text
    Le souci c'est que je n'arrive pas à import mon type. (edit) en réalité, on peut faire tourner le programme même avec l'erreur., mais lorsque j'utilise mon type, l'erreur "Error : Cannot assign [undefined] to *type*" apparait et ça ne marche pas)
    Voilà mes codes :

    Code Qt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    QGuiApplication app(ai_argc, aipp_argv);
     
    	qmlRegisterType<MiniModel>("anothertry.miniModel", 1, 0, "MiniModel");
    	QQmlApplicationEngine engine;
    	engine.addImportPath(QStringLiteral("..\\..\\..\\..\\Tools\\Qt\\5.12.0\\x64\\5.12.0\\msvc2017_64\\qml"));
    	engine.load(QUrl(QStringLiteral("../../../QML/miniModel/miniModel.qml")));
     
    	return app.exec();

    et QML :
    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
    import QtQuick 2.5
    import QtQuick.Window 2.5
    import QtQuick.Controls 1.4
    import "../../Src/" 1.0//file or directory not found
    import "../../x64/Debug/TEST_VIEW4.tlog" anothertry.minimodel 1.0;//symbole attendy ";" erreur de synthaxe
    import anothertry.miniModel 1.0//QML module not found (anothertry.miniModel).
    ApplicationWindow {
        id: root
        width: 300
        height: 480
        visible: true
        //property bool value: Minimodelqml.m_miniboule
     
        TextField {
            placeholderText: qsTr("User name")
            anchors.centerIn: parent
     
            onTextChanged: backend.userName = text
        }
    }
    Sur internet, personne ne semble avoir ce genre de problème. ça doit être parce que je n'utilise pas de projet Qt Creator...
    Comment dois-je faire pour ajouter mon type partagé dans le QML et transférer des valeurs ?
    merci d'avance

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    J'ajoute ça au cas ou.

    Ce que j'essaie de faire à terme, c'est communiquer avec un code QML déjà fait en utilisant cette manière de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    InternalItems.EditGrid {
            objectName: "EditGrid"
            width: widthScene*scale
            height: heightScene*scale
            opacity: 0.2
            z: 1000
            visible: mainModel.gridVisible && mainModel.edition
            resolution: mainModel.gridResolution
        }
    En soi, peu m'importe que j'utilise qmlRegisterType ou setContextProperty("mainModel",&mainModel) avec des getters Q_INVOKABLE. Si la méthode initiale du post ne fonctionne pas, je suis preneur pour des conseils ou des indications sur une autre méthode.

    (accéder à un attribut de mainModel depuis le qml donne cette erreur : unable to assign [undefined] to double)

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/05/2006, 11h11
  2. Réponses: 4
    Dernier message: 11/05/2006, 16h23
  3. Réponses: 10
    Dernier message: 16/12/2004, 15h23

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