Menyambungkan Isyarat C ke Slot QML
Isu:
Apabila cuba menghantar QString parameter daripada isyarat C ke slot QML, ralat berlaku menyatakan, "Tiada slot sedemikian QDeclarativeRectangle_QML_2::updateViewWithItem(QString)."
Penyelesaian:
Menggunakan Sambungan
Untuk menyelesaikan isu ini, sambungan hendaklah digunakan dan bukannya sambungan slot terus.
Dedahkan Objek C kepada QML:
Tambahkan objek C (myObj) pada sifat konteks QML menggunakan setContextProperty() dalam kod C utama.
<code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
Tentukan Isyarat:
Dalam C , takrifkan isyarat sebagai:
<code class="cpp">finishedGatheringDataForItem(QString signalString);</code>
Tambah Sambungan dalam QML:
Dalam fail QML, tambah sambungan kepada objek terdedah:
<code class="qml">Connections { target: YourObject onFinishedGatheringDataForItem: { qmlString = signalString } }</code>
Dengan menggunakan sambungan, slot QML boleh menerima parameter QString dengan betul tanpa ralat sebelumnya.
Atas ialah kandungan terperinci Bagaimana untuk Menyambung Isyarat C ke Slot QML dengan Parameter QString?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!