- Ringkasan hasil pencarian dan perbandingan library untuk menulis GUI di C++
- Persyaratan dasar: hanya perlu dukungan Windows, boleh untuk penggunaan komersial, styling mudah dengan dark mode, menghasilkan satu file EXE di bawah 40MB dengan dependensi minimal, pengembangan cepat
WinUI 3
- Awalnya tampak seperti pilihan yang sangat bagus
- Bisa menggunakan komponen Windows modern dan menyesuaikan warna style
- Bisa mendesain dengan XAML dan bahkan langsung memakai desainer Visual Studio
- Masalah:
- Dukungan untuk mendistribusikan aplikasi dalam bentuk unpackaged tidak terlalu baik
- Saat aplikasi dipindahkan ke VM atau komputer lain, sebagian besar gagal dijalankan
- Harus menyertakan banyak file
.dll untuk menangani fitur WinUI
- Tidak bisa membuat satu file
.exe portabel
- Tidak ada masalah bila dipakai dalam bentuk paket, tetapi akan terpasang sebagai paket AppX sehingga muncul masalah akses ke Win32 API
Win32 / MFC / library kecil yang membungkus Win32
- Karena butuh portabilitas tinggi, masuk akal untuk memakai rendering bawaan OS
- Program bisa menjadi satu file
.exe dan ukurannya juga bisa sangat kecil (jika MFC di-static link)
- Bisa memakai library yang lebih minimal yang sudah ditulis orang lain
- Masalah:
- Sangat sulit melakukan styling pada kontrol Win32 bawaan
- Harus menulis fungsi custom paint untuk semua kontrol
- Ada dark mode "tersembunyi" yang dipakai Windows File Explorer, tetapi hanya mencakup sebagian kontrol dan tampilannya pun masih kurang bagus
Qt
- Cawan suci GUI C++
- Kompleks, tetapi bisa diberi style dengan mudah menggunakan Qt Style Sheets
- Masalah:
- Jika ditautkan secara dinamis, ada sangat banyak
.dll yang dibutuhkan untuk menjalankan aplikasi dan ukurannya melebihi 40MB
- Qt bisa ditautkan secara statis ke program, tetapi karena lisensi LGPL Qt, Anda harus menjadikannya open source atau mendistribusikan object file agar bisa dikompilasi ulang
- Atau bisa membeli lisensi komersial, tetapi biayanya ribuan dolar
wxWidgets
- Library yang mudah dipelajari
- Bisa menggunakan wxFormBuilder
- Lisensinya lebih longgar daripada Qt dan bisa di-static link ke executable 3MB
- Masalah:
- Di Windows, ia memakai komponen Win32 bawaan dan tidak menyediakan opsi styling
- Mendukung penerapan dark control ala Windows File Explorer, tetapi hasilnya kurang bagus
hikogui
- Library GUI retained mode baru yang memakai Vulkan sebagai backend
- Memiliki dark mode bawaan dan mudah diberi style
- Masalah:
- Untuk bisa mengompilasinya dengan sukses, rasanya perlu gelar doktor ilmu komputer
- Setelah mencoba mengompilasi contoh selama lebih dari 30 menit, yang didapat hanya executable yang langsung crash karena access violation di dalam library Vulkan
Sciter
- Alternatif yang bagus untuk Electron, yang memungkinkan menulis GUI aplikasi desktop dengan HTML/CSS
- Masalah:
- Ukuran aplikasi akhir sekitar 25MB bersama semua
.dll, yang tampaknya akan jadi masalah tetapi masih bisa diterima
- Akan lebih baik jika open source dan versi static link untuk komersial bisa digunakan
- Tidak semahal Qt ($310), jadi rasanya rela membayar
- Masalahnya, kualitas rendering-nya tidak terlalu bagus
- Ada masalah aliasing pada font dan gambar
- Jendelanya memiliki bingkai abu-abu yang cukup tebal (2-3px) yang tidak bisa dikustomisasi atau diubah
WinForms / WPF
- Saat bertanya tentang library GUI C++, kebanyakan orang malah menyarankan memakai stack lain
- Mereka bilang C++ adalah ide buruk, jadi frontend program sebaiknya ditulis dengan stack lain dan fungsionalitas yang ditulis dalam C++ dimuat sebagai komponen/modul
- Bisa punya satu file
.exe berukuran kecil dan menggunakan WinForms/WPF
.dll bisa dibundel sebagai resource aplikasi lalu diekstrak ke folder sementara, kemudian memakai P/Invoke untuk memanggil .dll terkompilasi dari dalam aplikasi C#/.NET, atau menggunakan C++/CLI
- Masalah:
- .NET Framework sudah terpasang sebelumnya di Windows 10 ke atas, jadi secara teknis memenuhi kriteria tanpa dependensi
-
- Jika
.dll dibundel, file itu tetap harus diekstrak ke suatu tempat dan perlu menulis kode tambahan agar P/Invoke bisa bekerja
-
- C++/CLI dikompilasi menjadi kode .NET IL, sehingga terlihat seperti kode C++ yang diterjemahkan ke C#
Solusi?
- Untuk aplikasi sederhana, sepertinya tidak ada yang lebih cocok daripada Dear ImGui
- Kekurangannya terutama muncul saat merancang UI yang kompleks, dan karena ini bukan retained mode UI melainkan immediate mode UI, perlu menjalankan renderer GPU seperti DirectX untuk merender UI pada 60 frame per detik atau lebih
- Namun selain itu, ia cocok dalam segala hal
- Program hasil kompilasi hanya berukuran 500KB dan tidak perlu memasang VC++ Redistributable
Pendapat GN⁺
- Seperti yang dikatakan penulis, tampaknya memang tidak ada library yang sempurna untuk pengembangan aplikasi GUI. Ada trade-off tergantung kebutuhannya
- Untuk aplikasi sederhana, Dear ImGui tampak paling cocok, tetapi untuk membuat UI yang kompleks, mungkin lebih baik memakai toolkit GUI retained mode
- Jika ingin membuat aplikasi komersial, biaya lisensi bisa menjadi pertimbangan penting. Library seperti Qt mahal, sedangkan wxWidgets bisa digunakan gratis
- Membuat aplikasi GUI dengan C++ bukan pekerjaan yang mudah, jadi mungkin lebih realistis mengembangkan frontend dengan C# atau bahasa lain, lalu hanya mengimplementasikan bagian yang intensif performa dengan C++
- Jika menginginkan native look-and-feel di Windows, WinUI atau MFC adalah pilihan yang baik, tetapi jika membutuhkan dukungan lintas platform, Qt atau wxWidgets mungkin pilihan yang lebih baik
7 komentar
hikogui memang sosok yang menakutkan ya wkwk
https://getstream.io/blog/flutter-desktop-vs-electron/ membandingkan performa dengan berbagai metrik
Jika dibandingkan dengan Sciter dan Electron, Flutter Windows Desktop Build juga layak dipertimbangkan. Memang ada plugin yang sesekali memiliki bug, tetapi fondasinya solid sehingga tetap bisa dimanfaatkan sebagai media penyampaian.
Singleton instance, pembaruan otomatis, status bar, notifikasi Windows, waktu peluncuran yang cepat, bahasa Dart, plugin Win32API, dan lain-lain
Delphi
C++ Builder
"Butuh gelar doktor ilmu komputer agar kompilasi bisa berhasil"
wkwkwk
Opini Hacker News
.exedengan ukuran di bawah 40M. Memiliki lisensi yang gratis digunakan di desktop. Menyediakan gaya gelap/terang. Juga mencakup editor drag-and-drop WYSIWYG (yang masih dalam pengerjaan)wndproc. Sebagian besar kontrol menanyakan warna kepada parent-nya.exedengan tanpa dependensi atau dependensi seminimal mungkin, dan ukurannya harus di bawah 40MB.exe, bisa menggunakan satu file.htmldengan gambar/css/javascript yang di-inline