
KDAB Group е софтуерна консултантска компания за Qt, C++ и OpenGL приложения за различни платформи (настолни, вградени и мобилни), в допълнение към предоставянето на уроци за разработване на Qt приложения от нулата и мигриране на всички популярни рамки към Qt.
През годините KDAB е допринесъл за и е финансирал разработването на QDockWidget . Тъй като обаче промените и корекциите на грешки отнемаха много дни за внедряване, използването на QDockWidget се оказа лош избор, което доведе до създаването на KDDockWidgets.
KDDockWidgets е усъвършенствана рамка за докинг за QDockWidgets , която разширява употребата си чрез добавяне на функции, които QDockWidgets не поддържа.
QdockWidget комбинира графичен потребителски код със stateful логика, което прави добавянето на нови функции много трудно и води до значителна сложност при имплементацията на различни платформи. Като основен компонент на няколко графични потребителски интерфейса, той ви позволява да местите цели елементи на прозореца (ленти с инструменти, групи джаджи и др.), където пожелаете.
Въпреки това, KDAB твърди, че поддържането на кода на QDockWidgets не е много лесно, заявявайки, че:
KDDockWidgets се роди от нуждата ми да запазя разсъдъка си, след като съм работил по два проекта, които са изисквали обширна персонализация. Един, при който се опитахме да работим директно нагоре по течението, но степента на регресия в крайна сметка беше твърде голяма.
И още едно, когато поех по пътя на използването на частни API, фалшиви събития на мишката и филтри за събития, което в началото изглеждаше като добра идея, но в крайна сметка беше свят на болка. Освен това клиентите ни ставаха по-креативни с исканията си, така че беше ясно, че се нуждаем от по-добра рамка за докинг станция.
Основният проблем е дизайнът му , който е доста монолитен, но конфигурируем (можем да избираме функциите, достъпни за потребителя, дори и малко хора да ги използват, за анимации), със спагети код (щастливо смесващ логика и състояние на компонентите). Следователно, всяка промяна може да създаде голям брой регресии.
Ето защо KDAB реши да създаде KDDockWidgets , с който се стреми значително да опрости дизайна на QDockWidgets, като същевременно улесни адаптирането му към конкретни ситуации.
KDDockWidgets предоставя следните функции:
- Възможност за поставяне на джаджи в плаващ прозорец и прикачване на тази група към главния прозорец
- Пристанете към всеки прозорец, не само до главния прозорец
- Докинг до центъра на главния прозорец
- Поддръжка на разглобяеми раздели в централната джаджа в главния прозорец
- Възможност за отделяне на раздели от лента с раздели в докинг зона
- Възможност за комбиниране на няколко раздела чрез комбиниране на различни компоненти.
- Изложете вътрешни помощни джаджи, така че потребителят да може да ги персонализира или да предостави свои собствени.
- Групите компоненти могат свободно да превключват от външен прозорец (който съдържа само тази група компоненти) към главния прозорец (функция, частично внедрена в Qt 5.10).
- Персонализирайте приспособленията за раздели
- Персонализирайте лентите със заглавия
- Персонализирайте дограмата
- В допълнение към подчертаването, че основната промяна е добавянето на точни индикатори за премахване на елементи от графичния интерфейс, в допълнение към факта, че идеята за централна джаджа изчезва, тъй като тя вече не е специфичен елемент.
Новата организация ясно разделя логиката от графичния интерфейс , така че основният енджин за изпълнение може лесно да се използва повторно за Qt Quick интерфейси (което в крайна сметка се очаква). Това също така улеснява персонализирането на интерфейса; потребителите могат да предоставят свои собствени джаджи за всяка част от интерфейса.
Освен това, KDDockWidgets е замислен като рамка, така че можете лесно да променяте интерфейсите , за да осигурите персонализирано поведение и външен вид. KDDockWidgets е рамка с отворен код, лицензирана под лицензите GPLv2 и GPLv3.
Кодът на KDDockWidgets, както и демонстрация на него, са достъпни на следния линк.