Özel bir OpenGL sahnesini (QGLWidget'e sarılmış) uygulamaya çalışıyorum, ancak yine de QT denetimlerini (kaydırma çubukları ve düğmeleri gibi) kullanıyorum. Ana widget'ımın QWidget'i çocukken olan bir QGLWidget'i yapmaya çalıştım. Çocuk widget'ları işe yarıyor gibi görünüyor (açılan menüyü tıklattığımda, seçenekleri beliriyor), ancak widget çizilemiyor (beyaz bir kare görüyorum). QWIget'den QGLWidget'e kadar çocuk widget'larımın temel sınıfını değiştirdim ve QPainter işi çağırıyor, ancak QT GUI öğeleri hala görüntülenmiyor ...Grafikler için QGLWidget ve GUI için QT
Bazı QGLWidget'in QWidget'leri çocuklar olarak kullanamayacağını iddia ediyorum. Bundan emin değilim ve pes etmeye istekli değilim. Bu arada, OpenGL sahnesini çizmek için Görselleştirme Kitaplığı'nı kullanıyorum, ancak bu yalnızca bir OpenGL sarıcısıdır ...
Sorunun nerede olabileceği hakkında ipuçları var mı? Ayrıca, GQLWidget'e altwidget eklediğimde, temel olaylar bir nedenle işlenmeyi bırakıyor.
Güncelleme: Çeşitli parçacık ve düzen kombinasyonlarını denedim. QGLWidget sadece herhangi bir şeyin üstüne çizilir gibi görünüyor. Aletlerin Z-derinliğini ayarlamak için yükseltme() ile bile çalıştı, boşuna. Bir OpenGL widget'ının üzerine çizmenin tek yolu overlayGL() mi?
Güncelleştirme 2 Aylarca denedikten sonra, bunun QT ile ilgili bir şey olduğunu anladım. Bir QGLWidget, başka bir QGLWidget'in üzerine çizildiğinde, ilkinin background() işlevi çağrılmaz. Yani bir düğme var ve tıklanabilir, ancak çekilmez. Benim geçici çözümüm her şeyi QPainter kullanarak çizmekti - bu işe yarıyor. Merak ettiğim şey, bir tane çizmek için QPainter :: startNativePainting() kullanmak zorunda. Bir QGLWidget boyama aygıtı olduğu zaman startNativePainting() çağrısı yapmak için QPainter'da start() 'ı aşırı yükleyeceğini umarız ...
Başka bir (belki de kullanışlı) gerçek, QPainter'in Opengl içeriğini DEĞİŞTİRMESİ olarak adlandırmasıdır. Yani QPainter ile işbirliği içinde başka bir aracınız varsa (benim durumumda Görselleştirme Kitaplığı), olasılıklardan biri çökecektir (benim durumumda VL, her durumdan önce bağlam durumunun temizlenip temizlenmediğini kontrol eder).
Ana pencere olarak bir GL olmayan pencere öğesi ve bir GL widget'ı çocukken oluşturamazsınız ? Bu nedenle, pencerenizde istediğiniz diğer kontroller çocuklardan ziyade GL penceresinin kardeşleri ve kuzenleri olacaktır. –
İlk önce denedim - bazı GL_SRC_ALPHA sorunları hakkında şikayette bulunmuyor. QGLWidget, VL [link] (http://www.visualizationlibrary.org/) tarafından oluşturulmuştur ve çok karmaşıktır ve bu nedenle hata ayıklaması zor ... –
QWidget türetilmiş nesnelere bir QGLWidget'in üstünden geçmeye çalışıyor musunuz? – cmannett85