Maison > développement back-end > C++ > Comment passer une QString d'un signal C à un slot QML ?

Comment passer une QString d'un signal C à un slot QML ?

Mary-Kate Olsen
Libérer: 2024-11-05 21:08:02
original
977 Les gens l'ont consulté

How to Pass a QString From a C   Signal to a QML Slot?

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 :

  1. 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>
    Copier après la connexion
  2. Définissez votre signal :
    Votre signal doit être défini comme suit :

    <code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
    Copier après la connexion
  3. 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>
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal