Qt - 如何在QLabel图片上设置文本

3
我认为需要使用QPainter,但我不知道如何将它们结合起来。
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");
1个回答

7

您需要告诉画家在哪里绘制:

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);

这个不起作用。"没有匹配函数调用QPainter::QPainter(QImage&)"。 - user375566
候选者是QPainter :: QPainter(QPaintDevice *)...... 构造函数期望一个指针,因此您需要将图像的地址传递给构造函数。 - bjoernz
在图像上绘制还是覆盖QTextLabel更快? - user1767754

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接