2012-12-14 6 views
2

Je suis de déconner avec ce problème pendant des heures, et a décidé qu'il est temps de demander SO :)Redimensionnement fenêtre parent après la taille des enfants changent

J'ai un programme Qt qui tourne une image et met à jour la taille du widget . Voici le code que j'utilise pour le faire actuellement.

void VideoSubWindow::showFrame(const QImage& frame) 
{ 
    QPixmap pixmap = QPixmap::fromImage(frame); 
    ui->videoFrameLabel->setPixmap(pixmap); 
    resizeWidgets(pixmap.size()); 
} 

void VideoSubWindow::resizeWidgets(const QSize &size) 
{ 
    if(frameSize != size) 
    { 
     frameSize = size; 
     ui->videoFrameLabel->setFixedSize(size); 
     ui->scrollArea->setMinimumSize(size.width() + 2, size.height() + 2); 
    } 
} 

Les widgets sont structurés comme suit:

VideoSubWindow (QMainWindow) 
-> centralWidget (QWidget) (Vertical layout is set on this) 
    -> scrollArea (QScrollArea) 
    -> videoFrameLabel (QLabel) 
    -> statusBar (QStatusBar) 
    -> menuBar (QMenuBar) 

Lorsque le code ci-dessus est exécuté, comme faire pivoter l'image de 90 degrés, l'image sera mis en rotation, mais la fenêtre ne redimensionne pas correspondre la nouvelle taille de pixmap. J'ai essayé d'appeler adjustSize() et updateGeometry() sur SubWindow et centralWidget, mais ceux-ci semblent avoir l'effet nul. Mais, si je redimensionne manuellement la fenêtre avec ma souris, la fenêtre s'aligne sur la taille minimale définie pour le scrollArea, cela semble donc prendre effet.

Est-ce que quelqu'un a de l'expérience avec ça? Merci!

Répondre

1

Essayez avec la fonction resize(...): Qt documentation

adjustSize() utilisé la fonction sizeHint(), afin d'appeler adjustSize() sur subwindow et centralWidget ne peut avoir aucun effet

+0

Merci pour la suggestion, mais j'ai essayé le redimensionnement à la fois 'centralWidget' et' VideoSubWindow 'en utilisant la taille' scrollArea' mais pas de changement: - \ – mevatron

+0

Je ne comprends pas ce que vous essayez de faire, mais vous devriez essayer de redimensionner le scrollArea ... – benjarobin

+0

J'ai essayé cela hier, mais toujours pas de joie :(I ' Je ne suis pas certain de la taille de la fenêtre lorsque la taille de l'image change. – mevatron

Questions connexes