Uygulamamda çalışan bir iş parçacığım var, bu da zaman zaman QML UI'de hızla görüntülenecek bilgileri alıyor. Böyle bir bilgi bölümüne sahip olduğumda, UI iş parçacığı üzerinde yaşayan nesnenin aldığı sinyali yayarım.Qt sinyalleri fark edilebilir gecikme ile UI iş parçacığına ulaşıyor
Bu işlemin çok duyarlı olmasını istiyorum, böylece değişiklikler mümkün olduğunca hızlı bir şekilde QML UI'de görüntülenir (bu, çalışan iş parçacığının harici denetleyiciyi işlemesi nedeniyle önemlidir ve denetleyici ile kullanıcı etkileşimi arasındaki en kısa "kritik yolu" istiyorum) UI değişikliği). Bununla birlikte, emit signal()
arasındaki zaman farkının ve UI dizisinde çağrılan aralığın her zaman 20-40 milisaniye olduğunu keşfettim. Neden öyle?
Bunu hızlandırmak için ne yapabilirim? Sinyal gönderildikten sonra çalışan iş parçacığına QCoreApplication::processEvents()
numaralı telefonu aramayı denedim, ancak bu durum hiçbir şeyi değiştirmiyor.
Bazı düşünceler:
- Ben
processEvents
ama nedense UI iş parçacığı için arayabilir miyim? - Olayı, sinyal yerine yüksek öncelikli olarak kullanın. Yardımcı olacak mı?
OS: Win8.1, Qt 5.5
QCoreApplication :: processEvents, UI iş parçacığı olay döngüsü içindir. Sinyal bağlantısı, yuva işleyici, UI çalışma döngüsü hakkında daha fazla kod gönderin. – hiitiger
QML, ekranın yenileme hızında yenilenir göz önüne alındığında, yine de 60Hz yenileme hızında * 16.6ms gecikme * olacak. 20 ms gecikme normaldir ve 40 ms gecikme de yanlış değildir. Kullanıcınız yine de anlatamıyor, sorun ne? Ne yapmaya çalışıyorsun? BTW, 'processEvents', neredeyse hiç uygun yazılı bir kod gerekmemektedir. Kesinlikle * ihtiyacın yok. –