- C++ için GUI geliştirme kütüphaneleri araştırılıp karşılaştırıldı ve sonuçlar özetlendi
- Temel gereksinimler: yalnızca Windows desteği, ticari kullanıma uygunluk, dark mode dahil kolay stillendirme, en az bağımlılıkla 40 MB'tan küçük tek bir EXE üretimi, hızlı geliştirme
WinUI 3
- İlk bakışta harika bir seçenek gibi görünüyor
- Modern Windows bileşenleri kullanılabiliyor ve stil renkleri özelleştirilebiliyor
- XAML ile tasarlanabiliyor ve Visual Studio tasarımcısı doğrudan kullanılabiliyor
- Sorunlar:
- Uygulamayı paketlenmemiş biçimde dağıtmak pek iyi desteklenmiyor
- Uygulama bir VM'e ya da başka bir bilgisayara taşındığında çoğu zaman çalıştırılamıyor
- WinUI işlevlerini sağlayan çok sayıda
.dll dosyasının da dağıtılması gerekiyor
- Tek bir taşınabilir
.exe dosyası üretilemiyor
- Paketli kullanımda sorun yok, ancak AppX paketi olarak kurulduğunda Win32 API erişimiyle ilgili sorunlar çıkıyor
Win32 / MFC / Win32'yi sarmalayan küçük kütüphaneler
- Yüksek taşınabilirlik gerektiği için işletim sisteminin yerel çizimini kullanmak mantıklı
- Program tek bir
.exe dosyası olabilir ve boyutu da çok küçük kalabilir (MFC statik bağlandığında)
- Başkasının zaten yazdığı daha minimal bir kütüphane kullanılabilir
- Sorunlar:
- Temel Win32 kontrollerini stillendirmek çok zor
- Tüm kontroller için özel boyama işlevleri yazmak gerekiyor
- Windows Dosya Gezgini'nde kullanılan "gizli" bir dark mode var, ancak yalnızca bazı kontrolleri kapsıyor ve yine de pek iyi görünmüyor
Qt
- C++ GUI dünyasının kutsal kasesi
- Karmaşık, ama Qt Style Sheets kullanılarak kolayca stillendirilebiliyor
- Sorunlar:
- Dinamik bağlandığında uygulamayı çalıştırmak için gereken çok sayıda
.dll bulunuyor ve boyut 40 MB'ı aşıyor
- Qt programa statik olarak bağlanabiliyor, ancak bunun için ya uygulamanın açık kaynak olması ya da Qt'nin LGPL lisansı nedeniyle yeniden derleme için nesne dosyalarının dağıtılması gerekiyor
- Alternatif olarak ticari lisans satın alınabiliyor, ancak maliyeti binlerce dolar
wxWidgets
- Öğrenmesi kolay bir kütüphane
- wxFormBuilder kullanılabiliyor
- Qt'den daha esnek bir lisansa sahip ve 3 MB'lık çalıştırılabilir dosyaya statik olarak bağlanabiliyor
- Sorunlar:
- Windows'ta yerel Win32 bileşenlerini kullanıyor ve stillendirme seçenekleri sunmuyor
- Windows Dosya Gezgini dark control uygulamasını destekliyor, ama pek iyi değil
hikogui
- Arka uç olarak Vulkan kullanan yeni bir retained mode GUI kütüphanesi
- Yerleşik dark mode'a sahip ve kolayca stillendirilebiliyor
- Sorunlar:
- Başarıyla derlemek için bilgisayar bilimleri doktorası gerekiyormuş gibi hissettiriyor
- 30 dakikadan fazla örnekleri derlemeye çalıştıktan sonra elde edilen tek şey, Vulkan kütüphanesinin içinde access violation ile anında çöken bir çalıştırılabilir dosya oldu
Sciter
- HTML/CSS kullanarak masaüstü uygulamaları için GUI yazmayı sağlayan, Electron'a iyi bir alternatif
- Sorunlar:
- Nihai uygulamanın tüm
.dll dosyalarıyla birlikte yaklaşık 25 MB olması sorun yaratabilir gibi görünse de kabul edilebilir
- Açık kaynak olsaydı ve ticari kullanım için statik bağlantılı sürümü olsaydı daha iyi olurdu
- Qt kadar pahalı olmadığı için ($310) ücret ödemek sorun olmazdı
- Asıl sorun, render kalitesinin çok iyi olmaması
- Yazı tiplerinde ve görsellerde aliasing sorunları yaşandı
- Pencerenin, özelleştirilemeyen veya değiştirilemeyen oldukça kalın (2-3px) gri bir çerçevesi var
WinForms / WPF
- C++ GUI kütüphaneleri sorulduğunda çoğu kişi başka bir stack kullanmayı öneriyor
- C++'ın kötü bir fikir olduğunu, bu yüzden programın ön yüzünün başka bir stack ile yazılıp C++ ile yazılmış işlevlerin bileşen/modül olarak yüklenmesi gerektiğini söylüyorlar
- Küçük boyutlu tek bir
.exe dosyasına sahip olunabilir ve WinForms/WPF kullanılabilir
.dll dosyaları uygulamaya kaynak olarak gömülüp geçici klasöre çıkarılabilir; ardından P/Invoke kullanılarak C#/.NET uygulaması içinden derlenmiş .dll çağrılabilir ya da C++/CLI tercih edilebilir
- Sorunlar:
- .NET Framework, Windows 10 ve üzeri sürümlerde önceden yüklü geldiği için teknik olarak bağımlılık olmaması şartını karşılıyor
.dll dosyaları gömülürse bir yere çıkarılmaları gerekiyor ve P/Invoke'ın çalışması için ek kod yazmak gerekiyor
- C++/CLI, .NET IL koduna derleniyor; sonuçta C#'a çevrilmiş gibi görünen bir C++ kodu ortaya çıkıyor
Çözüm?
- Basit uygulamalar için Dear ImGui'den daha uygun bir seçenek olmadığı düşünülüyor
- Karmaşık arayüzler tasarlarken başlıca dezavantajı, retained mode değil immediate mode bir UI olması; dolayısıyla UI için saniyede 60 kareden fazla çizim yapmak üzere DirectX gibi bir GPU renderer'ının sürekli çalışması gerekiyor
- Ancak diğer tüm açılardan gereksinimlerle örtüşüyor
- Derlenmiş program yalnızca 500 KB boyutunda ve VC++ Redistributable kurulumu gerektirmiyor
GN⁺ görüşü
- Yazarın da söylediği gibi GUI uygulama geliştirme için kusursuz bir kütüphane yok gibi görünüyor. Gereksinimlere göre çeşitli trade-off'lar var
- Basit uygulamalar için Dear ImGui en uygun seçenek gibi dursa da, karmaşık arayüzler için retained mode bir GUI toolkit kullanmak daha iyi olabilir
- Ticari bir uygulama geliştirilecekse lisans maliyeti önemli bir değerlendirme unsuru olabilir. Qt gibi kütüphaneler pahalıyken wxWidgets ücretsiz kullanılabiliyor
- C++ ile GUI uygulaması geliştirmek kolay değil; bu nedenle ön yüzü C# veya başka bir dille geliştirip yalnızca performans yoğun kısımları C++ ile yazmak daha gerçekçi olabilir
- Windows'ta yerel görünüm ve hissiyat isteniyorsa WinUI veya MFC tercih edilebilir; çapraz platform desteği gerekiyorsa Qt ya da wxWidgets daha iyi bir seçim olabilir
7 yorum
hikogui korkutucu bir şeymiş, titreme
https://getstream.io/blog/flutter-desktop-vs-electron/ çeşitli göstergelerle performansı karşılaştırıyor
Sciter ve Electron ile karşılaştırıldığında Flutter Windows Desktop Build de değerlendirilmeye değer. Zaman zaman hatalı eklentiler olsa da temeli sağlamdır; bir iletim aracı olarak kullanırken işe yarar.
Tekil örnek, otomatik güncelleme, durum çubuğu, Windows bildirimleri, hızlı açılış süresi, Dart dili, Win32API Plugin vb.
Delphi
C++ Builder
"Derlemenin başarılı olması için bilgisayar bilimi doktorası gerekiyor"
kahkaha
Hacker News görüşü
.exehaline getirilebilir ve boyutu 40 MB'tan küçük kalabilir. Masaüstünde ücretsiz kullanılabilen bir lisansa sahip. Karanlık/açık stil sunuyor. Ayrıca (üzerinde çalışılan) sürükle-bırak WYSIWYG düzenleyici de içeriyor.exedosyası olmalı.exedosyası yerine görseller/css/javascript satır içi gömülü tek bir.htmldosyası kullanılabilir