Hubungkan Slot Sinyal QT Dengan Python

POIN365

Mengidentifikasi sinyal, menyetel sinyal slot online, dan memasang sinyal slot adalah tiga langkah utama dalam proses menghubungkan slot. Setiap langkah ini sangat penting untuk keseluruhan proses menghubungkan sinyal ke slot. Setiap langkah disertai dengan informasi spesifik.

Sinyal

Menggunakan sinyal dan slot Qt dengan python mungkin sedikit kurang menakutkan daripada menggunakannya di C++. Terlepas dari kenyataan bahwa Anda tidak harus menjadi ahli python untuk memulai, ada beberapa jebakan yang harus dihindari.

Mekanisme Pengamat Qt memungkinkan objek untuk berkomunikasi tanpa mengetahui internal satu sama lain. Ini adalah hal yang baik, terutama jika Anda adalah pengguna pemula QML. Namun, itu juga berarti Anda harus mengubah cara Anda menulis kode jika Anda ingin menggunakan Sinyal dan Slot Qt secara maksimal. Ini tidak sesulit kedengarannya, tetapi Anda harus sedikit lebih kreatif dengan kode Anda.

Sistem Pengamat Qt memiliki beberapa fitur yang menjadikannya lebih dari sekadar widget. Salah satu fiturnya adalah ota – cara mewah untuk mengetahui jenis sinyal yang dipancarkan oleh widget.

Slot

Objek di QT memancarkan sinyal. Ini adalah potongan kecil kode yang memberikan informasi berguna. Ini biasanya tipe yang aman dan dapat mengambil sejumlah argumen. Mereka berguna untuk berkomunikasi dengan objek lain.

Slot mirip dengan fungsi C++ normal. Ketika sinyal dipancarkan dari suatu objek, slotnya disebut. Di QT, ini dilakukan secara otomatis. Dimungkinkan juga untuk menggunakan slot untuk menerima sinyal. Penting untuk dicatat bahwa mereka dapat diabaikan jika sinyal tidak ada.

Mekanisme sinyal dan slot Qt juga memastikan bahwa slot dipanggil dengan parameter sinyal yang sesuai pada waktu yang tepat. Mekanisme ini disebut mekanisme Pengamat dan bekerja di C++ dan QML. Mekanismenya hanya mensyaratkan bahwa objek yang memancarkan sinyal mewarisi dari Judi slot.

Typedef

Menggunakan sinyal dan slot Qt, Anda dapat dengan mudah mengembangkan kelas yang sangat dapat digunakan kembali. Implementasi sinyal/slot Qt adalah thread-safe dan type-safe. Mekanisme sinyal dan slot Qt juga berguna untuk tugas terkait UI.

Qt 5 memperkenalkan sintaks sinyal dan slot baru selain sintaks berbasis string yang lama. Selain sintaks sinyal dan slot lama, Qt 5 mendukung argumen typedef dan argumen namespace.

Implementasi sinyal/slot Qt berguna untuk mengirim pesan antar QThreads. Untuk menghubungkan sinyal ke slot, Anda harus menggunakan penunjuk fungsi slot, yang disimpan ke variabel anggota kelas. Saat fungsi slot dipancarkan, slot bereaksi terhadap kejadian UI. Jika slot kelebihan beban, itu dicor ke kompiler.

Koneksi Qt5+ yang baru harus menyelesaikan masalah sinyal-ke-lambda. Namun, ada beberapa hal yang perlu diingat saat menyambungkan sinyal ke slot.

Mengidentifikasi sinyal

Mengidentifikasi QT sinyal slot koneksi itu sederhana. Tidak memerlukan preprosesor, pengidentifikasi string gaya posix atau dekorator khusus. Itu juga multithread dan tipe aman. Anda dapat menghubungkan sinyal ke objek apa pun yang memiliki slot. Anda juga dapat menghubungkan sinyal ke sinyal lain. Anda dapat menyambungkan slot ke sinyal menggunakan penunjuk fungsi. Anda juga dapat mengganti sinyal.

Jika Anda ingin mengidentifikasi QT sinyal slot koneksi, Anda dapat menggunakan makro QObject ::connect (). Fungsi ini mengembalikan true jika koneksi berhasil dan false jika gagal. Ini membutuhkan string karakter untuk argumen. Judi slot juga mendukung penunjuk fungsi. Menggunakan penunjuk fungsi untuk terhubung ke sinyal dapat menyebabkan kompiler memperingatkan Anda tentang nama slot atau parameter.

Memancarkan sinyal

Objek di Qt5 dapat memancarkan sinyal. Sinyal adalah fungsi sederhana. Sinyal diidentifikasi dengan nama kelasnya dan nama sinyal. Ada banyak sinyal yang telah ditentukan di Qt. Tetapi Anda juga dapat menentukan sinyal Anda sendiri. Anda juga dapat menghubungkan sinyal ke slot. Dengan cara ini Anda bisa mendapatkan pemberitahuan saat sinyal dipancarkan.

Anda dapat menggunakan metode Judi slot untuk menghubungkan sinyal ke slot. Metode ini menggunakan makro SLOT() untuk membuat sambungan. Makro SLOT mengubah parameter menjadi string. Saat sinyal dipancarkan, slot disebut dengan parameter sinyal. Jika koneksi gagal, metode mengembalikan false.

Fungsi Judi slot juga dapat digunakan dengan penunjuk fungsi. Argumen yang diteruskan ke penunjuk fungsi diubah menjadi string sebagai bagian dari koneksi. Namun, jika jenis argumen tidak cocok dengan slot, fungsi akan melaporkan kesalahan waktu proses.