2014-09-05 22 views
8

'da Qt5 ile Garip gecikmeli resim Windows'da Qt5 kullanıyorum. Qt Creator'da basit bir küçük widget projesi oluşturdum. İçinde bir metin düzenleme widget'ına sahip bir QMainWindow var. Dikey yerleşimi etkinleştirdim, bu nedenle metin düzenlemesi ana pencerenin iç boyutunu tam olarak tüketir (istediğim şey, küçük bir not defteri uygulaması oluşturmaya çalışıyorum).Windows

Önizleme sırasında ana pencerenin sağ alt köşesini sürüklerken (alt soldaki yeşil üçgeni tıklıyorum) Çocuk widget'ının yeniden boyutlandırılmasında küçük bir gecikme görüyorum. Aynı işlem çerçevesindeki ana pencere ile tam olarak yeniden boyutlandırılmaz (bu, 1-2 işlem karesinin arkasında olduğu gibi görünür).

Eski okul Win32 API'sinde bu gibi render lag ile uğraştığım yıllar önce hatırlıyorum. Hatırlıyorum, düzeltmek için bir ekran bitmap'ine çift-tamponlu render yapmak zorunda kaldım (ya da bu satırlardaki bir şey uzun bir zaman oldu).

Bu "render lag" Qt içinde düzeltmenin bir yolu var mı? Sadece bunun Windows'a özgü olduğunu ve başka platformları etkilemeyebileceğimi hayal edebiliyorum, ancak test etmedim. Daha fazla bilgi vermem gerekirse bana bildirin.

+3

Cevabı bilmiyorum, ancak "textedit" örnek uygulamasını $ QTDIR/qtbase/samples/widgets/richtext/textedit dizininde derlemeyi ve çalıştırmayı öneririm ve aynı sorunu da gösterip göstermediğini kontrol ederim. Eğer öyleyse, sadece Qt'nin Windows altında uygulandığı bir eser olabilir; değilse, textedit örnek uygulamasının uygulamanızdan farklı olarak ne yaptığını görün. (QW 5.3.1 ile MacOS/X altında yeniden boyutlandırırken herhangi bir gecikme görmüyorum) –

+1

Jeremy'nin tavsiyesi için teşekkürler. Örneği çalıştırdım ve hala sorunu görüyorum. –

+1

Bazı kodları dahil edebilir misiniz? Bu yüzden deneyebilirim ve belki sana yardım edebilirim. –

cevap

4

Bu bir Windows sorunudur, Qt değil. Daha fazla GUI ağırlığınız pencereniz daha belirgin. Bir kereliğine aynı sorunu araştırdım. 2B ve 3B veri görüntülerini gösteren birkaç widget'la oldukça GUI ağırlığımız vardı. Alt sağ köşeyi kullanarak pencereyi yeniden boyutlandırma, yeniden boyutlandırma-yeniden çizme dehşetiyle sonuçlandı. Ne yazık ki sorun Qt ile ilgili değil, Windows yeniden boyutlandırılan bir pencereyi yeniden çizme işlemek gibi görünüyor. Windows 7'deki dosya gezginde bile sorunu fark edebildim. Qt, varsayılan olarak çift tamponlamayı kullanıyor (@Bim tarafından yorumda belirtildiği gibi). Ayrıca Qt'ın repaint olaylarını açık bir şekilde tetiklemeye çalıştım. Bu biraz yardımcı oldu, ama sorunu çözmedi. Pek çok çabadan sonra onunla yaşamayı kararlaştırdık.

+0

Sadece eklemek için: "sadece onunla yaşamak için karar verdik." Muhtemelen bunu halletmenin tek yoludur. VS2015, Outlook, Explorer, vb. Gibi Microsoft ürünleri bile bu davranışı gösterir, böylece MS sadece "onunla birlikte" yaşar. –