gpt4 book ai didi

c++ - Qt QPrinter setPaperSize 不能正常工作

转载 作者:行者123 更新时间:2023-11-30 02:57:08 24 4
gpt4 key购买 nike

我正在尝试创建一个 Windows 应用程序(但最终也会将它移植到 linux,因此如果可能的话,交叉兼容性很重要)它将从网络摄像头拍摄照片并且可以在不使用 printDialog 框的情况下进行打印,但我是选择纸张尺寸时遇到问题。我希望将纸张尺寸设置为 4"x 6",这是 A6 格式,但是当我使用 setPaperSize(QtPrinter::A6) 时,它似乎默认为字母格式。尽管所有打印机并不总是默认为字母,但看起来每个打印机处理命令的方式不同,但大多数默认为字母。我相信这可能是 Qt 和打印机与驱动程序的兼容性问题。

我的问题是:有谁知道在 Qt 中将打印机设置为 4"x 6"的方法应该适用于所有打印机?

我的代码如下所示。

void MainWindow::Print() {

QPainter painter;
QPrinter *printer = new QPrinter(QPrinter::HighResolution);
printer->setPaperSize(QPrinter::A6);
if (!painter.begin(printer)) {
qWarning("Failed to open file");
return;
}

painter.fillRect(QRectF(QPointF(108,118),QPointF(110+352, 120+352)), Qt::black);
painter.fillRect(QRectF(QPointF(109,119),QPointF(109+352, 119+352)), Qt::white);
ui->graphicsView->scene()->render(&painter, QRectF(110,120, 350, 350), QRectF(0,0, ui->graphicsView->scene()->width(), ui->graphicsView->scene()->height()), Qt::IgnoreAspectRatio);
painter.drawText(110, 110, "Test");
painter.end();
}

我试过以下方法来调整纸张大小

printer->setPaperSize(QPrinter::A6)
printer->setPageSize(QPrinter::A6)
printer->setPaperSize(QSizeF(4.0, 6.0), QPrinter::Inch)

这些似乎都不起作用。如果有人可以帮助我解决这个问题,我将非常感激

最佳答案

setPaperSize 依赖于从打印机驱动程序接收到的信息,因此要真正独立于打印机,请自行计算 pageRects。请参阅 pageRect 和 paperRect 属性以及 QPrinter 的 fullPage 属性。另请参阅我对 Printing pagerect issues 的回答哪里有打印任意打印矩形的(错误的)起始示例以及如何修复问题给出的代码。

关于c++ - Qt QPrinter setPaperSize 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14881382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com