Heim > Backend-Entwicklung > C++ > Hauptteil

Wie übergebe ich nicht-primitive Typen zwischen C-Signalen und QML-Slots?

Patricia Arquette
Freigeben: 2024-11-02 16:26:29
Original
263 Leute haben es durchsucht

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

Fehlerbehebung bei der Signal-Slot-Verbindung zwischen C und QML

In Qt kann es beim Verbinden von Signalen von C-Klassen mit QML-Slots manchmal zu Fehlern kommen, wenn es um nicht-primitive Typen geht. Beispielsweise kann der Versuch, einen QString von einem C-Signal an einen QML-Slot zu übergeben, zu folgendem Fehler führen: „Object::connect: No such slots QDeclarativeRectangle_QML_2::updateViewWithItem(QString)“.

Lösung: Verwenden von Verbindungen

Um dieses Problem zu beheben, verwenden Sie QML-Verbindungen anstelle der herkömmlichen QObject::connect-Methode. So implementieren Sie es:

  1. Fügen Sie das Objekt zu QML hinzu: Machen Sie in Ihrem C-Code das myObj-Objekt mit setContextProperty für QML verfügbar.

    <code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
    Nach dem Login kopieren
  2. Definieren Sie das Signal:Deklarieren Sie in Ihrer C-Klasse das Signal wie folgt:

    <code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
    Nach dem Login kopieren
  3. Verbindungen hinzufügen in QML: Definieren Sie in Ihrer QML-Datei die Verbindungen wie folgt:

    <code class="qml">Connections {
        target: YourObject
        onFinishedGatheringDataForItem: {
            qmlString = signalString
        }
    }</code>
    Nach dem Login kopieren

Indem Sie diese Schritte befolgen, können Sie eine Verbindung zwischen dem C-Signal und dem QML-Steckplatz herstellen , sodass Sie benutzerdefinierte Datentypen nahtlos übergeben und verarbeiten können.

Das obige ist der detaillierte Inhalt vonWie übergebe ich nicht-primitive Typen zwischen C-Signalen und QML-Slots?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!