Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Melepasi QString Daripada Isyarat C ke Slot QML?
Qt: Menyambung Isyarat C ke Slot QML dengan QString
Dalam Qt, menghantar isyarat dari C ke slot dalam QML boleh menjadi mudah. Walau bagaimanapun, apabila ia datang untuk menghantar QString sebagai parameter, beberapa cabaran mungkin timbul.
Isu:
Anda sedang menyambung isyarat daripada objek C (myObj) ke slot dalam fail QML (updateViewWithItem). Slot ditakrifkan untuk menerima parameter QString, tetapi sambungan gagal dengan ralat: "Tiada slot sedemikian QDeclarativeRectangle_QML_2::updateViewWithItem(QString)".
Penyelesaian: Menggunakan Sambungan
Daripada menggunakan sambungan isyarat slot gaya C konvensional, Qt mencadangkan menggunakan Sambungan untuk ini senario tertentu.
Langkah:
Dedahkan Objek C Anda dalam QML:
Tetapkan sifat konteks dalam fail QML anda untuk menjadikan objek C anda (myObj) boleh diakses QML.
<code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
Tentukan Isyarat Anda:
Isyarat anda hendaklah ditakrifkan seperti berikut:
<code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
Buat Sambungan QML:
Dalam QML anda fail, tambah objek Connections untuk mengendalikan sambungan.
<code class="qml">Connections { target: YourObject onFinishedGatheringDataForItem: { qmlString = signalString } }</code>
Dengan menggunakan Connections, anda secara berkesan mewujudkan jambatan baharu antara C dan QML, membolehkan anda melepasi QString sebagai parameter kepada slot QML.
Atas ialah kandungan terperinci Bagaimana untuk Melepasi QString Daripada Isyarat C ke Slot QML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!