Saya baru-baru ini memformat ulang beberapa kode saya agar lebih mudah dibaca. Saya memiliki kode di kelas MainWindow untuk menangani peristiwa sentuh. Di antara fungsi-fungsi ini adalah fungsi pinchZoom, yang berfungsi sebelum perubahan saya. Saya memindahkan kode ke kelas tunggal yang merupakan QObject.
Ketika pinchZoom terdeteksi, widget yang relevan (ditemukan oleh QApplication::widgetAt()) memanggil metode pinchZoom(), yang menghentikan dan memulai ulang QTimer single-shot. Metode timeout()
QTimer terhubung ke slot yang melakukan pembesaran dan pembaruan tampilan sebenarnya. Ini agar saya dapat menambahkan penundaan antara gerakan mencubit-zoom yang sebenarnya dan pembaruan tampilan.
Sebelum memindahkan kode saya, sinyal timeout()
ini berfungsi dengan baik dan metode zoom dipicu. Namun, meskipun tidak menyentuh koneksi sinyal/slot, slot zoom yang dipicu oleh metode timeout()
tidak lagi dipanggil. Koneksi sebenarnya antara sinyal timeout()
dan slot dilakukan di konstruktor widget tempat pengatur waktu berada.
Saya sudah cek, dan sinyal/slot koneksi kembali true, jadi koneksi ADA.
Apakah ada alasan mengapa hal ini bisa terjadi? Apakah ini ada hubungannya dengan fakta bahwa QTimer yang sedang dimulai sekarang terjadi dalam kelas tunggal, bukan di kelas MainWindow?