2010-08-31 6 views
10

J'ai une fenêtre contenant un QScrollArea avec quelques widgets dedans.Qt: Comment redimensionner une fenêtre à son nouveau contenu

Jusqu'à présent, je créais le QScrollArea et ses widgets enfants dans le constructeur de ma fenêtre, puis je redimensionnais la fenêtre verticalement pour adapter son contenu en utilisant resize(400, sizeHint().height()). Jusqu'ici tout va bien.

Maintenant, j'ajoute ou supprime des widgets dans le QScrollArea lors de l'exécution. Que dois-je faire, après avoir ajouté ou supprimé des widgets, pour que la fenêtre s'adapte verticalement à son contenu? Dois-je appeler adjustSize()? resize(sizeHint())? Devrait-il y avoir un appel à layout->activate() ou peut-être updateGeometry() d'abord? Quelles politiques de taille importent réellement dans ce cas? Ceux de la fenêtre, ou de la zone de défilement, ou les deux? J'ai essayé de les mettre tous à Expanding. J'utilise Qt 4.6 sous Windows.

+0

Voulez-vous que QScrollArea ne possède pas de barres de défilement? –

+0

Absolument, maintenant l'idée est de se débarrasser de la barre de défilement verticale. L'étape suivante consistera à l'autoriser à apparaître uniquement si la hauteur totale du contenu QScrollArea est vraiment trop importante ou si l'utilisateur redimensionne la fenêtre. –

Répondre

9

Il semble que l'appel resize(sizeHint()) (sans aucune autre magie) après que les widgets ont été ajoutés à la zone de défilement fait l'affaire. D'une certaine manière manqué que la première fois.

+1

J'en avais besoin pour l'ajustement vertical, et ceci est sorti: 'QSize s = sizeHint(); s.setWidth (width()); redimensionner (s); ' – Notinlist

+0

Peut-être que cela aidera quelqu'un d'autre qui trouve cette question mais a mon problème à la place. La boîte de dialogue était en fait redimensionnée pour le contenu, mais en raison de la taille de la fenêtre dans le concepteur QT, elle était coupée en bas. Redimensionnement de la fenêtre dans le concepteur QT pour permettre plus de place au fond fixé pour moi – slf

Questions connexes