今天我们继续完善之前的文本编辑器,实现文件菜单中最后一个功能:打印预览和打印
修改头文件,声明打印、打印预览和一个printPreview槽函数
private slots: void filePrint(); void filePrintPreview(); void printPreview(QPrinter *);
首先来实现打印预览功能
1 void MainWindow::filePrintPreview ()2 {3 QPrinter printer(QPrinter::HighResolution);4 QPrintPreviewDialog preview(&printer, this);5 preview.setWindowTitle (tr("打印预览"));6 connect(&preview, SIGNAL(paintRequested(QPrinter*)), SLOT(printPreview(QPrinter*)));7 preview.exec ();8 }
首先初始化一个QPrinter类并设置它的打印模式为高分辨率打印,即600dpi
QPrintPreviewDialog类需要生成一个预览页面的时候会发射一个paintRequested(QPrinter *)信号,我们链接到printPreview(QPrinter *)函数。最后使用exec来show出打印预览对话框。printPreview(QPrinter *)函数如下:
void MainWindow::printPreview (QPrinter *printer){ textEdit->print(printer);}
调用textEdit的print方法将内容显示在QPrintPreviewDialog上
同样,打印功能也很类似:
void MainWindow::filePrint (){ QPrinter printer(QPrinter::HighResolution); QPrintDialog *printDialog=new QPrintDialog(&printer,this); if(printDialog->exec ()==QDialog::Accepted) { textEdit->print (&printer); } delete printDialog;}
如果用户点击确定,就会执行打印。