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
Mary-Kate Olsenasal
2024-11-05 21:08:02973semak imbas

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>
  2. Tentukan Isyarat Anda:
    Isyarat anda hendaklah ditakrifkan seperti berikut:

    <code class="cpp">finishedGatheringDataForItem(QString signalString)</code>
  3. 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!

Kenyataan:
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