Bagaimana untuk Melepasi Jenis Bukan Primitif Antara Isyarat C dan Slot QML?

Patricia Arquette
Lepaskan: 2024-11-02 16:26:29
asal
331 orang telah melayarinya

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

Menyelesaikan Masalah Sambungan Slot Isyarat Antara C dan QML

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)".

Penyelesaian: Menggunakan Sambungan

Untuk menyelesaikan isu ini, gunakan sambungan QML dan bukannya kaedah QObject::connect tradisional. Begini cara untuk melaksanakannya:

  1. Tambahkan objek pada QML: Dalam kod C anda, dedahkan objek myObj kepada QML menggunakan setContextProperty.

    <code class="cpp">qmlVectorForm->rootContext()->setContextProperty("YourObject", myOb);</code>
    Salin selepas log masuk
  2. Tentukan isyarat: Dalam kelas C anda, isytiharkan isyarat seperti berikut:

    <code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
    Salin selepas log masuk
  3. Tambah Sambungan dalam QML: Dalam fail QML anda, tentukan sambungan seperti ini:

    <code class="qml">Connections {
        target: YourObject
        onFinishedGatheringDataForItem: {
            qmlString = signalString
        }
    }</code>
    Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan