2010-12-14 5 views
1

J'ai deux widgets, un arbitraire (généralement un QLineEdit), et un QLabel qui affiche un Pixmap. Ils sont placés l'un à côté de l'autre avec un QHBoxLayout. Le widget avec cette disposition est à son tour placé dans une autre mise en page.Widgets les uns à côté des autres de même taille en Qt

Maintenant, ce que je veux, c'est que l'étiquette avec le pixmap soit automatiquement redimensionnée de sorte qu'elle soit aussi haute que le widget arbitraire à côté de lui. Cependant, même lorsque je mets la taille sizePolicy du label à Maximum, il semble toujours s'étendre à la taille originale du pixmap, au lieu de redimensionner le pixmap et de le réduire pour qu'il corresponde à l'autre widget. Au lieu d'avoir deux widgets de même taille, j'ai l'arbitraire qui est plus petit que le pixmap à côté de lui.

Des idées pour obtenir la taille de l'étiquette pixmap pour correspondre à la taille du widget à côté de lui?

Répondre

2

Que diriez-vous:

int height = arbitraryWidget->height();    // get desired height. 

label->setSizeHint(QSize(label->width(), height); // set size hint to current width and desired height. 
label->setSizePolicy(QSizePolicy::Fixed);   // optional, but this ensures size is desired. 
+0

Merci. Où pourrais-je mettre ceci pour qu'il soit automatiquement appelé quand la taille du widget arbitraire est changée? Il ne semble y avoir aucun signal pour cela. – pafcu

+1

Je crois qu'émettre un signal de la méthode resizeEvent() de votre widget arbitraire ferait le travail. Ensuite, votre fenêtre parente pourrait connecter ce signal à un slot avec ce code. – GatorGuy

Questions connexes