2010-11-24 40 views
2

Je crois que QPainter est utilisé, mais je n'arrive pas à comprendre comment combiner les deux.Qt - Comment placer le texte au-dessus de QLabel Image

QLabel* imageLabel = new QLabel(); 
QImage image("c://image.png"); 
imageLabel->setPixmap(QPixmap::fromImage(image)); 
imageLabel->setAlignment(Qt::AlignCenter); 

QPainter* painter = new QPainter(); 
painter->setPen(Qt::blue); 
painter->setFont(QFont("Arial", 30)); 
painter->drawText(rect(), Qt::AlignCenter, "Text on Image"); 

Répondre

6

Vous devez dire au peintre où dessiner:

QImage image("c://image.png"); 

// tell the painter to draw on the QImage 
QPainter* painter = new QPainter(&image); // sorry i forgot the "&" 
painter->setPen(Qt::blue); 
painter->setFont(QFont("Arial", 30)); 
// you probably want the to draw the text to the rect of the image 
painter->drawText(image.rect(), Qt::AlignCenter, "Text on Image"); 

QLabel* imageLabel = new QLabel(); 
imageLabel->setPixmap(QPixmap::fromImage(image)); 
imageLabel->setAlignment(Qt::AlignCenter); 
+0

cela ne fonctionne pas. "Aucune fonction correspondante pour l'appel à QPainter :: QPainter (QImage &)" –

+0

Les candidats sont QPainter :: QPainter (QPaintDevice *) ... Le constructeur attend un pointeur, vous devez donc donner l'adresse de l'image au constructeur. – bjoernz

+0

Ah, je le faisais un autre ... mauvais ... façon. Merci! –