2010-06-01 7 views
5

Dans l'application QT que nous développons, nous devons afficher plusieurs «fenêtres Viewer» (pour afficher les données dans le plan XY, le plan YX, le plan XZ et en 3D). Nous espérions utiliser le modèle d'application MDI, mais plus tard, le client nous a demandé de faire glisser et d'afficher les 'fenêtres Viewer' sur plusieurs postes de travail (en utilisant plusieurs moniteurs). Cela ne peut pas être fait en utilisant le modèle de fenêtre MDI, car nous ne pouvons pas déplacer la fenêtre MDI en dehors de la fenêtre principale de l'application. La seule façon possible est d'utiliser les fenêtres Dock car elles peuvent être désancrées depuis la fenêtre principale de l'application et se déplacer dans d'autres bureaux, mais les fenêtres Dock principales sont utilisées pour les palettes d'outils ou les fenêtres utilitaires.Modèle MDI ou Windows Dock?

(http://doc.qt.nokia.com/4.6/qdockwidget.html#details)

Est-ce une bonne pratique d'utiliser la fenêtre Dock pour nos besoins?

+0

Avez-vous résolu le problème? – Beachwalker

+0

oui, simplement utilisé QWidgets sans parents. Doit gérer un contexte pour conserver la liste de Windows (QWidgets) et utilisé ce contexte pour les synchroniser. –

Répondre

3

Je n'utiliserais pas le QDockWindow car il semblerait que vous n'utilisiez pas la zone client. De plus, vous ne voulez pas vous ancrer aux frontières de MainWindow mais simplement ajouter le widget à MainWindow.

Je pense que vous pouvez essayer d'utiliser plusieurs QWidget avec un QGridLayout. Lorsque vous faites glisser QWidget en dehors de MainWindow, supprimez simplement QWidget de la mise en page. Lorsque vous faites glisser à l'intérieur de la MainWindow, ajoutez le QWidget au bon endroit dans QGridLayout. Avec cette méthode, vous pouvez également changer les endroits du widget dans la fenêtre principale.

Je ne sais pas si c'est assez clair mais je pense de la même manière que cela est fait dans QtDesigner lorsque vous faites glisser de nouveaux éléments dans une mise en page. Lorsque vous faites glisser des widgets, vous pouvez voir l'endroit où il sera ajouté en relâchant le bouton de la souris. Dans mon esprit, cette méthode peut être celle que vous recherchez.

Espérons que cela aide

+0

merci beaucoup pour la réponse! Je vais essayer de mettre en œuvre comme vous l'avez suggéré. Mais il semble qu'il faut des hacks intelligents. Je dois aller avec le modèle SDI avec QGridLayout, mais comment puis-je afficher QWidgets à l'extérieur sans un parent? –

+2

Si un widget n'est pas parent, il devient une fenêtre autonome comme expliqué dans la description détaillée de QWidget: http://doc.qt.nokia.com/4.6/qwidget.html#details –