
Ο Όμιλος KDAB είναι μια εταιρεία συμβούλων λογισμικού για εφαρμογές Qt, C++ και OpenGL για διαφορετικές πλατφόρμες (επιτραπέζιους υπολογιστές, ενσωματωμένες και κινητές), εκτός από την παροχή καθοδήγησης για την ανάπτυξη εφαρμογών Qt από την αρχή και τη μετεγκατάσταση όλων των δημοφιλών frameworks στο Qt.
Με την πάροδο των ετών, το KDAB έχει συνεισφέρει και χρηματοδοτήσει την ανάπτυξη του QDockWidget . Ωστόσο, επειδή οι αλλαγές και οι διορθώσεις σφαλμάτων χρειάστηκαν πολλές ημέρες για να εφαρμοστούν, η χρήση του QDockWidget αποδείχθηκε κακή επιλογή, οδηγώντας στη δημιουργία του KDDockWidgets.
Το KDDockWidgets είναι ένα προηγμένο πλαίσιο σύνδεσης για το QDockWidgets , το οποίο επεκτείνει τη χρήση του προσθέτοντας λειτουργίες που δεν υποστηρίζονται από το QDockWidgets.
Το QdockWidget συνδυάζει εγγενώς κώδικα GUI με λογική stateful, καθιστώντας πολύ δύσκολη την προσθήκη νέων λειτουργιών και προκαλώντας σημαντική πολυπλοκότητα υλοποίησης σε διαφορετικές πλατφόρμες. Ως βασικό στοιχείο πολλών γραφικών διεπαφών χρήστη, σας επιτρέπει να μετακινείτε ολόκληρα στοιχεία παραθύρου (γραμμές εργαλείων, ομάδες widget κ.λπ.) όπου θέλετε.
Ωστόσο, το KDAB υποστήριξε ότι η συντήρηση του κώδικα QDockWidgets δεν είναι πολύ εύκολη, δηλώνοντας ότι:
Το KDDockWidgets γεννήθηκε από την ανάγκη μου να διατηρήσω τη λογική αφού δούλεψα σε δύο έργα που απαιτούσαν εκτεταμένη προσαρμογή. Ένα στο οποίο προσπαθήσαμε να δουλέψουμε απευθείας ανάντη, αλλά ο ρυθμός παλινδρόμησης κατέληξε να είναι υπερβολικός.
Και ένα άλλο όπου χρησιμοποίησα ιδιωτικά API, ψεύτικα συμβάντα ποντικιού και φίλτρα συμβάντων, που φαινόταν καλή ιδέα στην αρχή, αλλά κατέληξε να είναι ένας κόσμος πόνου. Επίσης, οι πελάτες μας γίνονταν πιο δημιουργικοί με τα αιτήματά τους, οπότε ήταν σαφές ότι χρειαζόμασταν ένα καλύτερο πλαίσιο σύνδεσης.
Το κύριο πρόβλημα είναι ο σχεδιασμός του , ο οποίος είναι μάλλον μονολιθικός αλλά διαμορφώσιμος (μπορούμε να επιλέξουμε τις συναρτήσεις που είναι διαθέσιμες στον χρήστη, ακόμα κι αν λίγοι άνθρωποι τις χρησιμοποιούν, για κινούμενα σχέδια), με κώδικα spaghetti (ευτυχώς αναμειγνύοντας λογική και κατάσταση στοιχείων). Επομένως, οποιαδήποτε αλλαγή μπορεί να δημιουργήσει μεγάλο αριθμό παλινδρομήσεων.
Γι' αυτόν τον λόγο, το KDAB αποφάσισε να δημιουργήσει το KDDockWidgets , το οποίο στοχεύει στην απλοποίηση του σχεδιασμού των QDockWidgets, διευκολύνοντας παράλληλα την προσαρμογή του σε συγκεκριμένες καταστάσεις.
Το KDDockWidgets παρέχει τις ακόλουθες λειτουργίες:
- Η δυνατότητα σύνδεσης γραφικών στοιχείων σε ένα αιωρούμενο παράθυρο και η σύνδεση αυτής της ομάδας στο κύριο παράθυρο
- Σύνδεση σε οποιοδήποτε παράθυρο, όχι μόνο στο κύριο παράθυρο
- Προσδεθείτε στο κέντρο του κύριου παραθύρου
- Υποστήριξη για αποσπώμενες καρτέλες στο κεντρικό widget μέσα στο κύριο παράθυρο
- Η δυνατότητα διαχωρισμού καρτελών από μια γραμμή καρτελών σε μια περιοχή σύνδεσης
- Δυνατότητα συνδυασμού διαφόρων καρτελών με συνδυασμό διαφόρων στοιχείων.
- Εκθέστε εσωτερικά γραφικά στοιχεία βοήθειας, ώστε ο χρήστης να μπορεί να τα προσαρμόσει ή να παρέχει τα δικά του.
- Οι ομάδες στοιχείων μπορούν ελεύθερα να αλλάξουν από ένα εξωτερικό παράθυρο (το οποίο περιέχει μόνο αυτήν την ομάδα στοιχείων) στο κύριο παράθυρο (μια δυνατότητα που εφαρμόζεται εν μέρει στο Qt 5.10).
- Προσαρμογή γραφικών στοιχείων καρτελών
- Προσαρμόστε τις γραμμές τίτλου
- Προσαρμόστε τα κουφώματα παραθύρων
- Εκτός από την επισήμανση ότι η κύρια αλλαγή είναι η προσθήκη ακριβών δεικτών για την εξάλειψη στοιχείων από το GUI, επιπλέον του γεγονότος ότι η έννοια του κεντρικού widget εξαφανίζεται, καθώς ως τέτοιο δεν είναι πλέον ένα συγκεκριμένο στοιχείο.
Η νέα οργάνωση διαχωρίζει με σαφήνεια τη λογική από τη γραφική διεπαφή , έτσι ώστε η υποκείμενη μηχανή εκτέλεσης να μπορεί εύκολα να επαναχρησιμοποιηθεί για διεπαφές Qt Quick (κάτι που τελικά είναι αναμενόμενο). Διευκολύνει επίσης την προσαρμογή της διεπαφής. Οι χρήστες μπορούν να παρέχουν τα δικά τους γραφικά στοιχεία για οποιοδήποτε μέρος της διεπαφής.
Επιπλέον, το KDDockWidgets προορίζεται να είναι ένα πλαίσιο, ώστε να μπορείτε εύκολα να παρακάμψετε τις διεπαφές για να παρέχετε προσαρμοσμένη συμπεριφορά και εμφάνιση. Το KDDockWidgets είναι ένα πλαίσιο ανοιχτού κώδικα, με άδεια χρήσης GPLv2 και GPLv3.
Ο κώδικας του KDDockWidgets, καθώς και μια επίδειξή του, είναι διαθέσιμοι στον ακόλουθο σύνδεσμο.