2009-12-30 7 views
2

J'ai différents types de QWidgets dans un DockWindow:Scrolling différents Widgets en même temps

  • 1 Qwt parcelle
  • 1 QWidget
  • 3 QGraphicsView

Et je dois faire défiler tous d'entre eux en même temps avec la même barre de défilement quand je zoome. Je connais deux solutions pour cela:

  • Créez une barre de défilement et connectez-la à chaque widget.
  • Créez une scrollArea et manipulez tous les widgets.

Quelle est la meilleure solution à cela? Connaissez-vous un tutoriel scrollArea?

Merci beaucoup

Répondre

2

Je voudrais essayer de faire en sorte que chacun des éléments qui a besoin de faire défiler de concert est à l'intérieur de son propre QScrollArea. Je voudrais ensuite mettre tous ces widgets dans un widget, avec un QScrollBar dessous (et/ou sur le côté, si nécessaire).

Désigner l'un des widgets à défilement intérieur comme «maître», probablement le widget de tracé. Ensuite, procédez comme suit:

  • Définissez chaque stratégie de barre de défilement horizontale QScrollArea pour ne jamais afficher les barres de défilement.
  • Le horizontalScrollBar()rangeChanged(int min, int max) signale à un emplacement qui définit le QScrollBar horizontale du widget principal à la même plage. De plus, il doit définir la même plage pour les barres de défilement horizontales du widget de la zone de défilement.
  • Le signal valueChanged(int value) horizontal de QScrollBar doit être connecté à l'emplacement setValue(int value) de la barre de défilement horizontale de chaque zone de défilement.
  • Répétez l'opération pour les barres de défilement verticales si vous effectuez un défilement vertical.

Il ya un endroit où je pense que cela pourrait mal se passer, et c'est le défilement de la molette de la souris. Vous pourriez résoudre cela de plusieurs façons. L'un serait de connecter toutes les zones de défilement à un emplacement qui se déclenche lorsque leur valeur change, ce qui met à jour toutes les autres barres de défilement. L'autre serait d'installer des filtres d'événements sur ces widgets, et d'ignorer le défilement ou de le traiter avec les barres de défilement principales.

+0

Merci beaucoup cjhuitt. – Drewen

Questions connexes