QTextCursor :: insertImage的解决问题(const QImage& image,const QString& name = QString())

时间:2013-06-03 16:22:14

标签: qt resolution qimage qtextcursor

我想在QTextDocument中插入一个QImage并将其另存为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插入和QTextDocument中的QImage插入之间的差异。 resulting document 图像与上述代码不完全对应。

由于

1 个答案:

答案 0 :(得分:1)

试试这个:

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

如果有任何不同,请告诉我。