Est-il possible de créer des zones de quai personnalisées en utilisant Qt 4.4. Je sais que c'est possible dans Qt 3 comme le suggère document. Extrait du document "... Si vous avez besoin de créer vos propres zones de quai, nous vous suggérons de créer une sous-classe de QWidget et d'ajouter vos Q3DockAreas à votre sous-classe ...". Cependant, il me semble que dans Qt 4, Q3DockArea a été retiré et maintenant QMainWindow a les zones de dock. Je veux fondamentalement avoir mon propre widget de zone de dock dans lequel je peux ancrer des widgets dedans. Ce widget de zone de dock peut être n'importe où dans l'application. Des idées sur comment je peux faire ça?Zone de quai personnalisée utilisant Qt 4.4
3
A
Répondre
4
Au début, Q3DockArea n'a pas été supprimé dans Qt4, en fait il a été ajouté. La classe qui a été supprimée était QDockArea. Vous pouvez toujours utiliser ces classes Q3 * si vous avez un ancien code, c'est pour quoi elles sont faites.
Mais je ne recommanderais pas d'utiliser les classes de compatibilité. Que diriez-vous d'utiliser un QMainWindow comme un QWidget. Créez-le avec un widget parent, mais sans menu, barre d'outils, barre d'état et révoquez son statut de niveau supérieur avec setWindowFlags() et autres.
Vous pouvez l'utiliser comme un ancien style QDockArea, placez-le où vous voulez et ajoutez vos QDockWidgets.
Par ailleurs, la version actuelle Qt est 4.5.2, pas besoin d'utiliser des versions périmées ;-)
Le problème que je vois avec la création d'un QMainWindow comme zone de dock est que vous ne pouvez accoster à gauche, à droite , haut et bas d'un QMainWindow. Donc, quand vous déposez quelque chose dans cette zone, il ne va pas remplir tout le widget, mais seulement se placer sur les zones ancrables. Ça n'a pas l'air sympa. ;) – Juba
Ce n'est pas vrai, du moins s'il n'y a pas de centralWidget dans ce QMainWindow, un seul dock couvrira toute la zone, si cela est autorisé. Les régions de dock n'ont aucune limite inhérente dans la taille. Mais utilisez les classes Q3Dock *, si vous pensez qu'elles se comportent plus comme vous le souhaitez. Ou écrivez votre propre classe QDockArea, en utilisant la partie docking de QMainWindow comme modèle. – hirschhornsalz