Dans Qt, la connexion des signaux des classes C aux emplacements QML peut parfois rencontrer des erreurs lorsqu'il s'agit de types non primitifs. Par exemple, tenter de transmettre une QString d'un signal C à un slot QML peut entraîner l'erreur : "Object::connect: No such slot QDeclarativeRectangle_QML_2::updateViewWithItem(QString)".
Pour résoudre ce problème, utilisez les connexions QML au lieu de la méthode traditionnelle QObject::connect. Voici comment l'implémenter :
Ajoutez l'objet à QML : Dans votre code C, exposez l'objet myObj à QML en utilisant setContextProperty.
<code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
Définissez le signal : Dans votre classe C, déclarez le signal comme suit :
<code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
Ajouter des connexions en QML :Dans votre fichier QML, définissez les connexions comme ceci :
<code class="qml">Connections { target: YourObject onFinishedGatheringDataForItem: { qmlString = signalString } }</code>
En suivant ces étapes, vous pouvez établir une connexion entre le signal C et le slot QML , vous permettant de transmettre et de gérer des types de données personnalisés de manière transparente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!