Dalam Qt, menyambung isyarat daripada kelas C ke slot QML kadangkala boleh menghadapi ralat apabila berurusan dengan jenis bukan primitif. Sebagai contoh, cubaan menghantar QString daripada isyarat C ke slot QML boleh mengakibatkan ralat: "Objek::sambung: Tiada slot sedemikian QDeclarativeRectangle_QML_2::updateViewWithItem(QString)".
Untuk menyelesaikan isu ini, gunakan sambungan QML dan bukannya kaedah QObject::connect tradisional. Begini cara untuk melaksanakannya:
Tambahkan objek pada QML: Dalam kod C anda, dedahkan objek myObj kepada QML menggunakan setContextProperty.
<code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
Tentukan isyarat: Dalam kelas C anda, isytiharkan isyarat seperti berikut:
<code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
Tambah Sambungan dalam QML: Dalam fail QML anda, tentukan sambungan seperti ini:
<code class="qml">Connections { target: YourObject onFinishedGatheringDataForItem: { qmlString = signalString } }</code>
Dengan mengikuti langkah ini, anda boleh mewujudkan sambungan antara isyarat C dan slot QML , membolehkan anda menghantar dan mengendalikan jenis data tersuai dengan lancar.
Atas ialah kandungan terperinci Bagaimana untuk Melepasi Jenis Bukan Primitif Antara Isyarat C dan Slot QML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!