Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Melepasi QString Daripada Isyarat C ke Slot QML?

Bagaimana untuk Melepasi QString Daripada Isyarat C ke Slot QML?

Mary-Kate Olsen
Lepaskan: 2024-11-05 21:08:02
asal
1033 orang telah melayarinya

How to Pass a QString From a C   Signal to a QML Slot?

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:

  1. 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>
    Salin selepas log masuk
  2. Tentukan Isyarat Anda:
    Isyarat anda hendaklah ditakrifkan seperti berikut:

    <code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
    Salin selepas log masuk
  3. Buat Sambungan QML:
    Dalam QML anda fail, tambah objek Connections untuk mengendalikan sambungan.

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

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!

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