Решение проблемы с QTextCursor::insertImage ( const QImage & image, const QString & name = QString())

Я хотел бы вставить QImage в QTextDocument и сохранить его в виде файла PDF. Для этого я использую метод QTextCursor::insertImage ( const QImage & image, const QString & name = QString()), но изображение в пикселях. С тем же изображением и с методом QTextCursor::insertImage ( const QTextImageFormat & format, QTextFrameFormat::Position alignment) это нормально.

вот пример:

//! Initialise l'imprimante
QPrinter printer;
printer.setOutputFileName(fileDir);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setPaperSize(QPrinter::A4);
printer.setPageMargins(20,20,20,20, QPrinter::Millimeter);
printer.setColorMode(QPrinter::Color);
printer.setResolution(300);

//! Initialise le document et le style
//! Document
QTextDocument *doc = new QTextDocument();
doc->setPageSize(printer.paperSize(QPrinter::Millimeter));
doc->setDefaultFont(QFont("Arial", 4));
QTextCursor cursor(doc);


QTextImageFormat picture1;
picture1.setName("./imagename.png");
picture1.setWidth(150);

QImage picture2;
picture2.load("./imagename.png");
picture2 = picture2.scaledToWidth(150);

cursor.insertImage(picture1,QTextFrameFormat::InFlow);
cursor.insertText("\n");
cursor.insertImage(picture2);

doc->print(&printer);

Вот снимок экрана с разницей между вставкой QTextImageFormat и вставкой QImage в мой QTextDocument .итоговый документИзображение не соответствует в точности приведенному выше коду.

Спасибо

1 ответ

Попробуй это:

picture2 = picture2.scaledToWidth(150, Qt::SmoothTransformation);

Дайте мне знать, если это имеет какое-либо значение.

Другие вопросы по тегам