精通Qt4编程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.8 打印文档

现在还是以Qt设计器绘制的主窗口为例,在主窗口的“工具”菜单中添加一个打印菜单命令,并实现打印文档的功能。

在CMainWindow类的头文件mainwindow.h中的私有区声明打印动作:

        QAction* actPrint;

在头文件mainwindow.h中的private slots区声明打印槽函数:

        void doPrint();

接下来,修改CMainWindow类的实现文件mainwindow.cpp,实现打印功能。

修改iniConnect()函数,添加下列代码。

        actPrint = menu_T->addAction(tr("打印文档"));
        connect(actPrint, SIGNAL(triggered()), this, SLOT(doPrint()));

在实现文件mainwindow.cpp中添加doPrint()槽的实现,如下。

        void CMainWindow::doPrint()
        {
            QTextDocument *document = textEdit->document();
            QPrinter printer;

            QPrintDialog dlg(&printer, this);
            dlg.setWindowTitle(tr("打印文档"));
            if (dlg.exec() != QDialog::Accepted)
                return;

            document->print(&printer);
        }

在槽函数的最后,调用QTextDocument::print()函数,实现文档的打印。

现在编译运行应用程序,执行打印功能。如果没有打印机的话,可以在“打印文档”对话框中选择“打印到文件”,将文档打印到一个PDF文件,如图4-25所示。

图4-25 打印文档到PDF文件

然后可以打开打印的PDF文件,查看打印效果。