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

  1. ###raw>post.musername###
    Futur Membre du Club
    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
      0  0

  2. #2
    Futur Membre du Club
    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)