Qt : Connecter le signal C au slot QML avec QString
Dans Qt, envoyer des signaux de C aux slots dans QML peut être simple. Cependant, lorsqu'il s'agit de passer QString en paramètre, certains défis peuvent survenir.
Le problème :
Vous connectez un signal provenant d'un objet C (myObj) à un slot dans un fichier QML (updateViewWithItem). Le slot est défini pour recevoir un paramètre QString, mais la connexion échoue avec une erreur : "No such slot QDeclarativeRectangle_QML_2::updateViewWithItem(QString)".
La solution : utiliser les connexions
Au lieu d'utiliser des connexions de signal à fente classiques de style C, Qt suggère d'utiliser des connexions pour ce scénario spécifique.
Étapes :
Exposez votre objet C dans QML :
Définissez une propriété de contexte dans votre fichier QML pour rendre votre objet C (myObj) accessible à QML.
<code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
Définissez votre signal :
Votre signal doit être défini comme suit :
<code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
Créez la connexion QML :
Dans votre fichier QML, ajoutez un objet Connections pour gérer la connexion.
<code class="qml">Connections { target: YourObject onFinishedGatheringDataForItem: { qmlString = signalString } }</code>
En utilisant Connections, vous établissez efficacement un nouveau pont entre C et QML, vous permettant de passer QString comme paramètre du slot QML.
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!