首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt QPrinter setPaperSize不能正常工作。

Qt QPrinter setPaperSize不能正常工作。
EN

Stack Overflow用户
提问于 2013-02-14 18:15:39
回答 1查看 2.9K关注 0票数 1

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

,我的问题是:有人知道如何在Qt中将打印机设置为4“x6”,这应该适用于所有打印机吗?

我的代码如下所示。

代码语言:javascript
复制
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();
}

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

代码语言:javascript
复制
printer->setPaperSize(QPrinter::A6)
printer->setPageSize(QPrinter::A6)
printer->setPaperSize(QSizeF(4.0, 6.0), QPrinter::Inch)

这些似乎都不起作用。如果有人能在这件事上帮我,我会很棒的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-15 08:31:16

setPaperSize依赖于从打印机驱动程序接收到的信息,因此要真正独立于打印机,可以自己计算pageRects。请参阅pageRect和paperRect属性以及QPrinter的fullPage属性。还请参见我对Printing pagerect issues的回答,其中有一个(错误的)开始打印任意打印rects的示例,以及如何修复这个问题给出的代码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14881382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档