KDDockWidgets, QDockWidget için gelişmiş bir uygulama çerçevesi

KDQDockWidget'ı

Grup KDAB, Qt, C++ ve OpenGL uygulamalarına yönelik bir yazılım danışmanlığıdır farklı platformlar için (masaüstü, entegre ve mobil) ayrıca Qt uygulamalarını sıfırdan geliştirmek için mentorluk sağlar ve tüm popüler çerçeveleri Qt'ye taşıma konusunda.

Yıllar boyunca KDAB, QDockWidget'ın geliştirilmesine katkıda bulundu ve finanse edildi. Ancak değişikliklerin ve hata düzeltmelerinin uygulanması günler aldığından, QdockWidget'ın kullanımı, Bunun iyi bir seçenek olmadığı ortaya çıktı ve böylece KDDockWidgets'ın doğuşu sağlandı.

KDDock Widget'ları QDockWidgets için gelişmiş bir yerleştirme çerçevesiQDockWidgets'ın desteklemediği işlevleri ekleyerek kullanımını genişletir.

QdockWidget, GUI kodunu yerel olarak mantıkla durumla birleştirir, gibi yeni özelliklerle ilerlemeyi çok zorlaştırıyor, bu da farklı platformlarda uygulanmasında büyük karmaşıklığa neden olur. Bir dizi grafiksel kullanıcı arayüzünün temel bir bileşeni olduğundan, tüm pencere elemanlarını (araç çubukları, widget grupları vb.) istediğiniz yere taşıyabilirsiniz.

Sin ambargo, KDAB, QDockWidgets kodunu korumanın çok kolay olmadığını savundu. Peki, şu yorumu yapıyor:

KDDockWidgets, kapsamlı özelleştirme gerektiren iki proje üzerinde çalıştıktan sonra akıl sağlığımı koruma ihtiyacımdan doğdu. Doğrudan yukarı yönde çalışmaya çalıştığımız bir tanesinde gerileme oranı çok fazla oldu.

Ve özel API'yi, sahte fare olaylarını ve olay filtrelerini kullanma yolunu izlediğim bir başkası da, ilk başta iyi bir fikir gibi görünse de sonunda acı dolu bir dünyaya dönüştü. Ayrıca müşterilerimiz istekleri konusunda daha yaratıcı olmaya başladı, dolayısıyla daha iyi bir yerleştirme çerçevesine ihtiyacımız olduğu açıktı.

Asıl sorun tasarımıdır, oldukça monolitik ancak yapılandırılabilir (animasyonlar için az sayıda kişi yapsa bile kullanıcının kullanabileceği işlevleri seçebiliriz), spagetti koduyla (mantık ve bileşen durumunu neşeyle karıştırarak). Bu nedenle herhangi bir değişiklik çok sayıda regresyona neden olabilir.

Bu nedenle KDAB, KDDockWidgets'ı oluşturmaya karar verdiQDockWidgets tasarımını büyük ölçüde basitleştirmeyi ve belirli durumlara uyum sağlamayı kolaylaştırmayı amaçlıyor.

KDDockWidgets aşağıdaki işlevleri sağlar:

  • Widget'ları kayan bir pencereye yerleştirebilmek ve bu grubu ana pencereye yerleştirebilmek
  • Yalnızca ana pencereye değil, herhangi bir pencereye yerleştirme
  • Ana pencerenin ortasına yerleştirme
  • Ana penceredeki merkezi widget'ta bulunan çıkarılabilir sekmeler için destek
  • Yerleştirme alanındaki sekme çubuğundan sekmeleri ayırabilme
  • Birkaç bileşeni birleştirerek birden fazla sekmeyi birleştirme yeteneği.
  • Kullanıcının bunları özelleştirebilmesi veya kendi widget'larını sunabilmesi için dahili yardım widget'larını kullanıma sunun.
  • Bileşen grupları, harici bir pencereden (yalnızca bu bileşen grubunu içeren) ana pencereye (Qt 5.10'da kısmen uygulanan bir özellik) serbestçe geçiş yapabilir.
  • Sekme widget'larını özelleştirin
  • Başlık çubuklarını özelleştirin
  • Pencere çerçevelerini özelleştirin
  • Ek olarak, asıl değişikliğin, GUI'deki öğeleri ortadan kaldırmak için kesin göstergelerin eklenmesi olduğu ve ayrıca merkezi widget kavramının artık belirli bir öğe olmadığı için ortadan kalktığı gerçeğinin de altı çiziliyor.

Yeni organizasyon, mantığı grafik arayüzden açıkça ayırıyorböylece temel yürütme motoru Qt Quick arayüzleri için kolayca yeniden kullanılabilir (nihayetinde beklenen de budur). Ayrıca arayüzü özelleştirmeyi de kolaylaştırır; kullanıcı, arayüzün herhangi bir kısmı için kendi widget'larını sağlayabilir.

Buna ek olarak, KDDockWidgets'ın bir çerçeve olması amaçlanmıştır, böylece arayüzleri kolayca geçersiz kılabilirsiniz özel davranış ve görünüm sağlamak. KDDockWidgets açık kaynaklı bir çerçevedir, GPLv2 ve GPLv3 lisansları altındadır.

KDDockWidgets kodunun yanı sıra demosu da mevcut Aşağıdaki bağlantıda.


Google'da tercih edilen kaynak olarak ekleyin.