QPrinter设置DPI

当使用QPrinter进行打印时,不同DPI设置可能影响打印效果。解决办法是通过调用setResolution()函数设定DPI,但需确保此调用在begin()之前,以确保设置生效。参考链接提供了关于Qt高DPI显示器和QPrinter打印功能的详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用QPrinter打印文件时,有时不同的DPI打印出来效果不一样,这个问题是由于DPI不同导致的;

可以使用QPrinter的setResolution();来设置DPI,需要注意的是这个函数调用必须放在begin调用之前才能生效。

 

 

参考:

Qt之高DPI显示器(一) - 解决方案整理 - 朝十晚八 - 博客园
https://www.cnblogs.com/swarmbees/p/12004594.html

QT中QPrinter打印功能 - 灰信网(软件开发博客聚合)
https://www.freesion.com/article/2198855874/

void printImage2(const QPixmap &pixmap) { // 打印机初始化 QPrinter printer(QPrinter::HighResolution); printer.setPrinterName("Zebra ZD421 (300 dpi) - ZPL"); // 设置打印机名称 printer.setPageSize(QPageSize(QSize(50, 30), QPageSize::Millimeter)); // 设置页面尺寸(单位:毫米) printer.setResolution(300); // 设置为 300 DPI // 先预览 previewPrint(pixmap, printer); // 打印机状态检查 if (!printer.isValid() || printer.printerState() == QPrinter::Error) { return; } // 检查传入的图片是否为空 if (pixmap.isNull()) { return; } QRect pageRect = printer.pageRect(); int pageWidth = pageRect.width(); int pageHeight = pageRect.height(); logPrintf(LOG_ERROR, "pageWidth:%d \n", pageWidth); logPrintf(LOG_ERROR, "pageHeight:%d \n", pageHeight); int imageWidth = pixmap.width(); int imageHeight = pixmap.height(); logPrintf(LOG_ERROR, "imageWidth:%d \n", imageWidth); logPrintf(LOG_ERROR, "imageHeight:%d \n", imageHeight); // 创建一个绘图对象,用于在打印机上绘制内容 QPainter painter; if (!painter.begin(&printer)) { return; } painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform); // 计算图片在打印页面上的位置和大小,使其居中显示 int x = (pageRect.width() - pixmap.width()) / 2; int y = (pageRect.height() - pixmap.height()) / 2; painter.drawPixmap(x, y, pixmap); // 结束绘图 painter.end(); return ; } 上述代码在打印的时候,能否将图片铺满整个打印区域
最新发布
07-22
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fensnote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值