QT打印过程

关于打印机的设置参数可以通过QPrinter类设置,使用一些可以支持打印的控件,输出ps文件,将ps传给打印机驱动程序。

1打印设置

QPrinter类是打印设置的类。

1.1 OutputFormat

说明:

QPrinter输出文件的格式,QPrinter::PdfFormat会输入pdf文件格式,QPrinter::PostScriptFormat输入ps文件格式.章节(11.2)中执行print()后生成的文件类型就是根据这个来的。

相关函数:

OutputFormat QPrinter::outputFormat () //当前格式

void QPrinter::setOutputFormat ( OutputFormat format )//设置格式

void QPrinter::setOutputFileName ( const QString & fileName )//文件名后缀设为ps即为ps格式,后缀为pdf即为pdf格式

1.2 其他部分参数

Orientation:纸张方向,有QPrinter::Portrait(纵向)和QPrinter::Landscape(横向)

void QPrinter::setOrientation ( Orientation orientation )

Orientation QPrinter::orientation ()

PaperSize:  纸张大小,有A4等

void QPrinter::setPaperSize ( PaperSize newPaperSize )

PaperSize QPrinter::paperSize ()

其他类型可参考帮助文档

2输出为文件

可以作为输入的控件有以下几个:

(1)     QWebView,QWebFrame,作为html文件格式的载体;

(2)     QPlainTextEdit,QTextEdit, 单行/多行文本编辑区域;

(3)     QPainter,用于绘图的类,可处理图片格式的文件;

(4)     QPrintPreviewWidget,专门用于打印预览的控件;

(5)     QTextDocument,文档类型的文件处理;

以上控件都有一个共同点,都有print()函数,将设置好的QPrinter传入即可,输出对应的文件。

2.1 QWebView和QWebFrame

用途:

作为html文件格式的载体

处理函数:

void QWebView::print ( QPrinter * printer )

void QTextDocument::print ( QPrinter * printer )

示例:

//全局的变量

QWebView *webview=0;

QPrinter *printer=0;

 

void printWebView(void)

{

    If(webview!=0)

    {

        webview = new QWebView();

    }

    If(webview!=0)

    {

         printer = new QPrinter(QPrinter::PrinterResolution);

    }

    webview->load(QUrl(“file:///home/root/test.html”));

    //因为加载会花费时间,等加载完成才能处理打印

    connect(webview,SIGNAL(loadFinished(bool)),this,SLOT(loadend (bool)));

}

void loadend(bool ok)

{

    webview->print(printer);//输出打印文件

}

2.2 QPlainTextEdit和QTextEdit

用途:

用于界面文本输入的控件

处理函数:

void QPlainTextEdit::print ( QPrinter * printer )

void QTextEdit::print ( QPrinter * printer )

示例:

void prinTextEdit(void)

{

    QTextEdit *edt = new QTextEdit();

    QPrinter *printer = new QPrinter(QPrinter::PrinterResolution); 

     edt->setText(“This is an text!”);    

     edt->print(printer);

     delete printer;

     delete edt;

}

2.3 QPainter

用途:

用于绘图的类

处理函数:

QPainter ( QPaintDevice * device )

示例:

void prinTextEdit(void)

{

    QImage image(“/home/root/test.jpg”);

    QPainter painter(printer);

    QRect rect = painter.viewport();

    QSize size = image.size();

 

    size.scale(rect.size(), Qt::KeepAspectRatio);

    painter.setViewport(rect.x(), rect.y(),size.width(), size.height());

    painter.setWindow(image.rect());

    painter.drawImage(0, 0, image);

 

    painter.drawText(10,10, ”this is image”);

}

2.4 QPrintPreviewWidget

用途:

专门用于打印预览的控件

处理函数:

QPrintPreviewWidget::QPrintPreviewWidget ( QPrinter * printer, QWidget * parent = 0, Qt::WindowFlags flags = 0 )

void QPrintPreviewWidget::print ()

示例:

 

QTextEdit edt;

void prinTextEdit(void)

{

    QPrinter *printer = new QPrinter(QPrinter::PrinterResolution);

    QPrintPreviewWidget *preview = new QPrintPreviewWidget (printer);

    connect(previewWidget, SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreview(QPrinter *)));//关联打印预览的内容

    preview ->print();

    delete printer;

    delete preview;

}

void printPreview(QPrinter *printer)

{

     edt.setText(“This is an text!”);

     edt.print(printer);

}

2.5 QTextDocument

用途:

文档类型的文件处理

处理函数:

void QTextDocument::print ( QPrinter * printer )  

3输出到设备

章节(11.2)中输出ps的文件格式可以作为打印机驱动的输入文件。

在qt中可以使用以下命令:

QString cmd;//cmd设置为打印的命令,需要驱动支持。

system(cmd);

下面是一个工参考的的命令:

gs -q -dNOPAUSE -dSAFER -sOutputFile=xxx.prn -sDEVICE=stcolor –sPAPERSIZE=a4 -r360x360 -dBitsPerPixel=1 -sDithering=gsmono -dnoWeave -sOutputCode=plain @stcany.upp xxx.ps quit.ps

4相关控件

Qt提供了一些标准的控件。

QPrintDialog,打印对话框

QPrintPreviewDialog,打印预览对话框
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页