Heim >Backend-Entwicklung >C++ >Wie übergebe ich einen QString von einem C-Signal an einen QML-Slot?
Qt: C-Signal an QML-Steckplatz mit QString anschließen
In Qt kann das Senden von Signalen von C an Steckplätze in QML unkompliziert sein. Wenn es jedoch darum geht, QString als Parameter zu übergeben, können einige Herausforderungen auftreten.
Das Problem:
Sie verbinden ein Signal von einem C-Objekt (myObj) mit einem Slot in einer QML-Datei (updateViewWithItem). Der Steckplatz ist für den Empfang eines QString-Parameters definiert, aber die Verbindung schlägt mit der Fehlermeldung „Kein solcher Steckplatz QDeclarativeRectangle_QML_2::updateViewWithItem(QString)“ fehl.
Die Lösung: Verbindungen verwenden
Anstatt herkömmliche Slot-Signal-Verbindungen im C-Stil zu verwenden, empfiehlt Qt die Verwendung von Verbindungen für dieses spezielle Szenario.
Schritte:
Stellen Sie Ihr C-Objekt in QML bereit:
Legen Sie eine Kontexteigenschaft in Ihrer QML-Datei fest, um Ihr C-Objekt (myObj) für QML zugänglich zu machen.
<code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
Definieren Sie Ihr Signal:
Ihr Signal sollte wie folgt definiert werden:
<code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
Erstellen Sie die QML-Verbindung:
Fügen Sie in Ihrer QML-Datei ein Connections-Objekt hinzu, um die Verbindung zu verwalten.
<code class="qml">Connections { target: YourObject onFinishedGatheringDataForItem: { qmlString = signalString } }</code>
Durch die Verwendung von Connections stellen Sie effektiv eine neue Brücke zwischen C und QML her, die Ihnen den Übergang ermöglicht QString als Parameter für den QML-Slot.
Das obige ist der detaillierte Inhalt vonWie übergebe ich einen QString von einem C-Signal an einen QML-Slot?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!