前面实现了文档的文字还有段落的操作,接下来我们准备去实现文档的打印还有打印预览功能。
文档打印实现:
向mainWindow.h添加函数:
public:
void docPrint();//文档打印
private slots:
void on_printAction_triggered();
槽函数on_PrintAction_triggered()函数就是去调用docPrint()函数。
函数实现:
void MainWindow::docPrint()
{
//打印当然实现得有一个打印机
QPrinter pter(QPrinter::HighResolution);//设置打印机的像素
//有了打印架当然得有打印对话框
QPrintDialog *ddlg=new QPrintDialog(&pter,this);
if(activateChildWnd()){
ddlg->setOption(QAbstractPrintDialog::PrintSelection,true);
}
ddlg->setWindowTitle("打印文档");
//保存一下当前活动的子窗口
ChildWnd *childWnd=activateChildWnd();
if(ddlg->exec()==QDialog::Accepted){
childWnd->print(&pter);
}
delete ddlg;
}
void MainWindow::on_printAction_triggered()
{
docPrint();
}
打印功能当然需要一个打印机,在函数定义的时候首先定义一个打印机指定像素。打印那么肯定有一个打印提示框,定义一个QPrintDialog对象,再紧接着判断是否是活动窗口,如果是就将打印提示框的选项设置为用户可选择的。再获取当前的活动窗口,用模态的方式判断是否接受打印,接受打印调用子窗口QTextEdit的打印函数print,再删除自身创建的文本打印框。
打印预览实现:
mainWindow.h添加函数:
public:
void docPrintPreview();//打印预览
private slots:
void printPreview(QPrinter*printer);
void on_printPreviewAction_triggered();
函数实现:
void MainWindow::docPrintPreview()
{
QPrinter pter;
QPrintPreviewDialog preview(&pter,this);
connect(&preview,SIGNAL(paintRequested(QPrinter*)),
this,SLOT(printPreview(QPrinter*)));
preview.exec();
}
void MainWindow::printPreview(QPrinter *printer)
{
activateChildWnd()->print(printer);
}
void MainWindow::on_printPreviewAction_triggered()
{
docPrintPreview();
}
主要思想就是在主窗口点击打印预览的时候调用点击槽函数,点击槽函数再调用打印预览docPrint函数,首先呢定义一个打印机,因为在打印预览对话框会用到。在建立信号与槽,就是如果有打印需求的话,就调用printPreview函数,去实现打印。