2010-11-26 5 views
2

Je suis en train de développer un plugin personnalisé dans Qt et il y a cette situation où je dois construire un widget qui a une image dessus. J'utilise donc QLabel comme classe de base pour mon widget personnalisé. Voici le code pour l'événement de peintureComment redimensionner une image dans QLabel

 QPixmap pic("/general/source/pic.png"); 
    setAutoFillBackground(true); 
    QPalette palette; 
    palette.setBrush(QPalette::Window, QBrush(pic)); 

    this->setPalette(palette); 

Maintenant, l'image est rendue sur le QLabel, mais ce n'est pas ce que je désirais.

  1. Je souhaite que l'image s'adapte à la taille du QLabel.
  2. Je ne veux pas que l'image se répète lorsque la taille du QLabel dépasse la taille de l'image.

Aidez-nous s'il vous plaît.

Répondre

3

En supposant que vous pouvez obtenir la taille de votre contrôle, vous pouvez faire évoluer votre pixmap avant de le mettre dans la brosse à l'aide

pic.scaled (width, height, Qt::IgnoreAspectRatio, Qt::FastTransformation) 

Cela renvoie une autre QPixmap que vous pouvez transmettre à votre QBrush. Juste pour référence, vous pouvez également utiliser une feuille de style pour définir l'image de la bordure pour votre contrôle.

border-image: url(yourImage); 
+0

Ce n'est pas ne fonctionne pas pour moi :( – chai

+0

ce qui ne fonctionne pas exactement? L'image n'a pas l'échelle? Il n'a pas correctement échelle? Vous pouvez » – Liz

+1

Ok .. a obtenu ce qui s'est mal passé .. le code correct est Pixmap mis à l'échelle = pic.scaled (largeur, hauteur, Qt :: IgnoreAspectRatio, Qt :: FastTransformation) Et puis affichage à l'échelle – chai

-1

Si vous avez une classe de widget personnalisé, vous pourriez remplacer le paintEvent et faire le dessin approprié à ce moment-là. Je ne sais pas si vous pouvez simplement dessiner le pixmap à la bonne taille et appeler la classe du parent pour finir le dessin, ou si vous devez tout faire vous-même.

2

Essayez d'utiliser la fonction QLabel

setScaledContents(true); 
+0

Fonctionne uniquement pour agrandir pixmap Si vous essayez de mettre de gros pixmap dans une petite place, il serait rogné –

Questions connexes