微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

打印对打印机来说太大

如何解决打印对打印机来说太大

我正在使用 QPrinter 在小部件中传递一些信息并将其打印在我的打印机上,我想要它的大小,但是它不在乎我是否在对话框中设置了大小,它只是打印太大了,就像是一个 11x14 英寸的页面,所有内容都超出了边界。

我的代码如下,它工作正常,并设法打印我需要的东西,首先我声明一个paintEvent来处理我的小部件上的“绘画”并且它完美地工作

void cuadro::paintEvent(QPaintEvent *event){   
    QPainter p(this); 
    pintarCarta(p);  
 }

我还声明了一个名为 pintarCarta(QPainter &painter)函数,它拥有我需要的一切(稍后我将传递一个向量(QString))

void cuadro::pintarCarta(QPainter &painter){

    QPen pen;  // Dinamicos
    QPen pen2; // Estaticos                       declara la qpen para los ajustes de lineas
    // painter.begin(&printer);  // inicializa el dispositivo para impresion,terminar con painter.end
    Qpixmap Imagen;
    
    pen2.setColor(Qt::green);   // color de linea
    pen2.setWidth(2); // ancho de linea
    
//    const QRect rectangle = QRect(0,850,1000);  // rectangulo general donde va todo
    QRect boundingRect;
    
    Imagen.load("Imagenes/logo.png");
    //painter.setBackgroundMode(Qt::TransparentMode);
    painter.drawpixmap(QRect(0,80,60),Imagen,QRect(0,70,40));
    QFont font = painter.font();
    
    font.setPixelSize(28);  //  usar una variable
    painter.setFont(font);
    painter.drawText(QRect(318,200,520,300),tr("EnTrada de Almacen"),&boundingRect); // 
    ...
    ...
    ...
   }

然后当我看到一切正常时,我只需将它传递给 Qprinter 对话框,一切看起来都很好,它会打印出来。但它对于一封信来说太大了,知道它可能是什么吗?我对这个有点迷茫,文档也没有多大帮助。

void cuadro::Imprimir(){
     
    QPrinter *printer;
    QPrintDialog dialog(this);
    printer = dialog.printer();
    printer->setFullPage(true);
    printer->setPaperSize(QPrinter::Letter);  // cant set the correct paper size,prints in 11x14in format
    
    dialog.setwindowTitle("Impresion de Documento");
    if (dialog.exec() == QDialog::Rejected)
        return;
    
    QPainter e(printer);
    pintarCarta(e);
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。