Qt 打印图片

	QPrinter printer;
        printer.setPageSize(QPrinter::A4);
        QPainter painter(&printer);
        pixmap= new QPixmap();
        pixmap= cprint->getpixmaplast();
        QMatrix matrix;
        matrix.rotate(90);
        QPixmap *img1= new QPixmap;
        *img1=pixmap->transformed(matrix);
        QRect rect = painter.viewport();
        QPixmap image = img1->scaled(rect.size());
        QSize size = image.size();
        size.scale(rect.size(), Qt::KeepAspectRatio);
        painter.setWindow(image.rect());
        painter.drawPixmap(0,0,image);

可以直接打印横向图片这里使用的是a4纸大小


如果需要预览

void Destop::Rele_cprint_print()
{
    
    QPrinter printer(QPrinter::HighResolution);
    plotPic(&printer);
    QPrintPreviewDialog preview(&printer,0);/* 打印预览 */
    /**
     * QPrintPreviewDialog类提供了一个打印预览对话框,里面功能比较全,
     * paintRequested(QPrinter *printer)是系统提供的,
     * 当preview.exec()执行时该信号被触发,
     * plotPic(QPrinter *printer)是用户自定义的槽函数,图像的绘制就在这个函数里。
     */
    connect(&preview, SIGNAL(paintRequested(QPrinter *)),this,SLOT(plotPic(QPrinter *)));
    preview.exec(); /* 等待预览界面退出 */

}


void Destop::plotPic(QPrinter *printer)
{
    QPainter painter(printer);
    pixmap= new QPixmap();
    QImage *img = new QImage;
    img->load(strName);
    QPixmap image = QPixmap::fromImage(*img);
    QRect rect = painter.viewport();
    QSize size = pixmap->size();
    size.scale(rect.size(), Qt::KeepAspectRatio);//此处保证图片显示完整
    painter.setViewport(rect.x(), rect.y(),size.width(), size.height());
    painter.setWindow(pixmap->rect());
    painter.drawPixmap(0,0,*pixmap);/* 数据显示至预览界面 */
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值