Maison > développement back-end > C++ > le corps du texte

Comment transmettre des types non primitifs entre les signaux C et les emplacements QML ?

Patricia Arquette
Libérer: 2024-11-02 16:26:29
original
332 Les gens l'ont consulté

How to Pass Non-Primitive Types Between C   Signals and QML Slots?

Dépannage de la connexion signal-emplacement entre C et QML

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)".

Solution : Utilisation des connexions

Pour résoudre ce problème, utilisez les connexions QML au lieu de la méthode traditionnelle QObject::connect. Voici comment l'implémenter :

  1. 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>
    Copier après la connexion
  2. Définissez le signal : Dans votre classe C, déclarez le signal comme suit :

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

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!

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