
KDAB Group adalah perusahaan konsultan perangkat lunak untuk aplikasi Qt, C++ dan OpenGL untuk berbagai platform (desktop, embedded, dan mobile), selain menyediakan bimbingan untuk mengembangkan aplikasi Qt dari awal dan dalam migrasi semua framework populer ke Qt.
Selama bertahun-tahun, KDAB telah berkontribusi dan mendanai pengembangan QDockWidget . Namun, karena perubahan dan perbaikan bug membutuhkan waktu berhari-hari untuk diimplementasikan, penggunaan QDockWidget terbukti bukan pilihan yang baik, sehingga menyebabkan terciptanya KDDockWidgets.
KDDockWidgets adalah kerangka kerja docking tingkat lanjut untuk QDockWidgets , yang memperluas penggunaannya dengan menambahkan fitur-fitur yang tidak didukung oleh QDockWidgets.
QdockWidget secara bawaan menggabungkan kode GUI dengan logika stateful, sehingga sangat sulit untuk menambahkan fitur baru dan menyebabkan kompleksitas implementasi yang signifikan di berbagai platform. Sebagai komponen inti dari beberapa antarmuka pengguna grafis, QdockWidget memungkinkan Anda untuk memindahkan seluruh elemen jendela (toolbar, grup widget, dll.) ke mana pun Anda inginkan.
Namun, KDAB berpendapat bahwa memelihara kode QDockWidgets bukanlah hal yang mudah, dengan menyatakan bahwa:
KDDockWidgets lahir dari kebutuhan saya untuk menjaga kewarasan saya setelah mengerjakan dua proyek yang membutuhkan penyesuaian ekstensif. Saat kami mencoba untuk bekerja langsung di bagian hulu, tetapi tingkat kemunduran akhirnya menjadi terlalu banyak.
Dan satu lagi di mana saya mengambil rute menggunakan API pribadi, acara mouse palsu, dan filter acara, yang tampak seperti ide bagus pada awalnya, tetapi akhirnya menjadi dunia yang menyakitkan. Selain itu, klien kami menjadi lebih kreatif dengan permintaan mereka, jadi jelas bahwa kami membutuhkan kerangka kerja dok yang lebih baik.
Masalah utamanya adalah desainnya , yang agak monolitik tetapi dapat dikonfigurasi (kita dapat memilih fungsi yang tersedia untuk pengguna, meskipun hanya sedikit orang yang menggunakannya, untuk animasi), dengan kode yang berantakan (dengan seenaknya mencampur logika dan status komponen). Oleh karena itu, setiap perubahan dapat menimbulkan sejumlah besar regresi.
Oleh karena itu, KDAB memutuskan untuk membuat KDDockWidgets , yang bertujuan untuk sangat menyederhanakan desain QDockWidgets, sekaligus memfasilitasi adaptasinya terhadap situasi tertentu.
KDDockWidgets menyediakan fungsi-fungsi berikut:
- Mampu menambatkan widget di jendela mengambang dan memasang grup itu ke jendela utama
- Dock ke jendela mana pun, bukan hanya jendela utama
- Docking ke tengah jendela utama
- Dukungan untuk tab yang dapat dilepas di widget tengah dalam jendela utama
- Mampu melepaskan tab dari bilah tab di area dok
- Kemampuan untuk menggabungkan beberapa tab dengan menggabungkan berbagai komponen.
- Perlihatkan widget bantuan internal agar pengguna dapat menyesuaikannya atau menyediakan widgetnya sendiri.
- Grup komponen dapat dengan bebas beralih dari jendela eksternal (yang hanya berisi grup komponen ini) ke jendela utama (fitur yang diterapkan sebagian di Qt 5.10).
- Sesuaikan widget tab
- Sesuaikan bilah judul
- Sesuaikan bingkai jendela
- Selain menyoroti bahwa perubahan utama adalah penambahan indikator yang tepat untuk menghapus elemen dari GUI, selain fakta bahwa gagasan widget pusat menghilang, karena itu bukan lagi elemen tertentu.
Struktur organisasi baru ini secara jelas memisahkan logika dari antarmuka grafis , sehingga mesin runtime yang mendasarinya dapat dengan mudah digunakan kembali untuk antarmuka Qt Quick (yang pada akhirnya diharapkan). Struktur ini juga memfasilitasi kustomisasi antarmuka; pengguna dapat menyediakan widget mereka sendiri untuk bagian mana pun dari antarmuka.
Selain itu, KDDockWidgets dirancang sebagai kerangka kerja, sehingga Anda dapat dengan mudah menimpa antarmuka untuk memberikan perilaku dan tampilan khusus. KDDockWidgets adalah kerangka kerja sumber terbuka, yang dilisensikan di bawah lisensi GPLv2 dan GPLv3.
Kode KDDockWidgets, beserta demonya, tersedia di tautan berikut.