一步步学Qt,第八天-使用QPrinter打印多页文档
一步步学Qt,第八天-使用QPrinter打印多页文档
使用文档打印,在很多的地方都有应用,办公室里可能需要用此来将编辑好的文档打印出来。当然遇到多页文档的打印时,就程序设计来说,就设计到分页的问题,怎么样的分页才是合理的呢。Qt中使用QTextDocument的的方式可以自动的实现文档的自动分页。具体看code:
#include "dialog.h" #include "ui_dialog.h" //#include <QDebug> //#include <QPainter> //#include <QPoint> //#include <QPrintDialog> //#include <QPrinter> #include <string> using namespace std; Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); ui->widget->size(); qDebug() << ui->widget->size().width()<<ui->widget->height()<<this->width(); } Dialog::~Dialog() { delete ui; } void Dialog::paintEvent(QPaintEvent *e) {/* QPainter painter(this); QPoint pointer(ui->widget->size().width()-150,ui->widget->size().height()); QFont font("Times", 100, QFont::Bold); font.setItalic(true); painter.setFont(font); QPen pen(Qt::red); painter.setPen(pen); painter.drawText(pointer,tr("hello")); this->update();*/ } void Dialog::on_pushButton_clicked() { QPrinter printer(QPrinter::PrinterResolution); QPrintDialog printDialog(&printer,this); if (printDialog.exec()){ QTextDocument textdocument; QString title="Title"; QString body="this is the content"; QString str = "<body><center><h1>"+title+"</h1></center>"+body+"</body>"; textdocument.setHtml(str); textdocument.print(&printer); } }
运行效果:
打印效果:
使用的html的一个标签来控制文档的格式