Qt - Как установить текст поверх изображения QLabel

Я считаю, что используется 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");

person Community    schedule 24.11.2010    source источник


Ответы (1)


Вам нужно указать художнику, где рисовать:

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);
person bjoernz    schedule 24.11.2010
comment
это не работает. Нет соответствующей функции для вызова QPainter::QPainter(QImage&) - person ; 24.11.2010
comment
Кандидатами являются QPainter::QPainter(QPaintDevice*)... Конструктор ожидает указатель, поэтому вам нужно указать адрес изображения в конструкторе. - person bjoernz; 24.11.2010
comment
Быстрее рисовать на изображении или накладывать qtextlabel? - person user1767754; 18.10.2014