当前位置: 代码迷 >> QT开发 >> QT横向打印的Bug,可有人遇到过啊该如何解决
  详细解决方案

QT横向打印的Bug,可有人遇到过啊该如何解决

热度:76   发布时间:2016-04-25 04:20:31.0
QT横向打印的Bug,可有人遇到过啊?
Linux操作系统,内核版本2.6.32-71.29.1,
打印机为HP color LaserJet CP5225,
打印机驱动为操作系统自带驱动,
打开一个文档设置成横向打印,打印正常。
我自己做一个Qt打印程序,采用QPainter来自己画出要打印的内容,纵向打印正常,横向打印出错!
我从网上下载了两个打印的例子,在本机编译后也出现上述问题,纵向打印正常,横向打印出错。
可有人也遇到过类似的问题啊?能否给些提示或者解答啊?
------解决方案--------------------
另外,我虚拟打印,打印成PDF文件的话,横向和纵向都能正常打印,没有问题,用打印机打印,横向打印会出问题!!!!!!!!!!!
------解决方案--------------------
横向打印出错.
至少说明是什么错误,以及错误提示内容吧.
------解决方案--------------------
谢谢回复,
竖版打印没有问题,横版打印出错;
如果虚拟打印,生成PDF,都是正常的。
横版出的错误有两类,
如果不是特别复杂的页面的话,能够打印出结果,但是有些字体完全混乱,页头有不需要的横线,打印队列会报错。比较复杂的页面,和多页的话,打印不出结果,能看到任务进入打印队列,打印队列报错。
------解决方案--------------------
打印代码很简单,希望高人能指导一下,或者有linux系统和打印机的,能试一下

    QPrinter printer;


 //设置为横版打印
    this->printer.setPageSize(QPrinter::A4);
    this->printer.setOrientation(QPrinter::Landscape);
    this->printer.setPageMargins(20,20,20,20,QPrinter::Millimeter);

//
//连接信号和槽函数
    //打印预览
    this->connect(ui->pushButton,SIGNAL(clicked()),this,
                  SLOT(doPreview()));
    //直接打印
    this->connect(ui->pushButton_2,SIGNAL(clicked()),this,
                  SLOT(doPrint()));

void MainWindow::exPrint()
{
    QPainter painter(&this->printer);
    QFont colFont("华文黑体",30,QFont::Bold);
    painter.setFont(colFont);
    painter.drawText(20,30,"This is a Simple Example! Just Test Print!");
    painter.drawText(20,100,"Hellow World! This is a Test,Page One");
    painter.drawText(20,180,"In Linux, I hope all will be OK!");
    painter.drawText(20,280,"Did it Success?");
    //新的一页
    this->printer.newPage();
    painter.drawText(QRect(20,30,800,600),Qt::AlignHCenter
------解决方案--------------------
Qt::TextWordWrap,
                     "Across the Great Wall We Can Reach Every Corner in the World!");
    painter.drawText(20,200,"This is a Test! Page 2!!!!");
    painter.drawText(20,280,"Test 2!");
    painter.drawText(QRect(20,300,800,600),Qt::AlignHCenter
------解决方案--------------------
Qt::TextWordWrap,
                     "This is the way the world ends not with a bang but a whimper");
}
void MainWindow::doPreview()
{
    QPrintPreviewDialog *myDlg=new QPrintPreviewDialog(&this->printer);
    this->connect(myDlg,SIGNAL(paintRequested(QPrinter*)),this,SLOT(exPrint()));
  相关解决方案