首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信封的QTextDocument页码

信封的QTextDocument页码
EN

Stack Overflow用户
提问于 2012-02-24 19:40:32
回答 1查看 2.2K关注 0票数 4

我正在编写一个将地址直接打印到信封上的应用程序。我使用的是QTextDocument,问题是它的print()方法添加了页码,这在信封中是不正确的。

一些代码,以防你需要它:

代码语言:javascript
复制
void MainWindow::print()
{
    QString addressText = textEdit->document()->toPlainText();
    envelopeDocument = new QTextDocument(this);
    printer.setResolution(QPrinter::HighResolution);
    printer.setPrinterName("OKI B6200(PCL6)");
    printer.setOrientation(QPrinter::Landscape);
    QFont font("Trebuchet MS");
    switch (envelopeComboBox->currentIndex()){
    case 0:
        font.setPointSize(12);
        envelopeDocument->setDefaultFont(font);
        envelopeDocument->setPlainText(addressText);
        printer.setPaperSize(QSizeF(114,225),QPrinter::Millimeter);
        printer.setPageMargins(120,60,20,15,QPrinter::Millimeter);
        break;
    case 1:
        font.setPointSize(14);
        envelopeDocument->setDefaultFont(font);
        envelopeDocument->setPlainText(addressText);
        printer.setPaperSize(QSizeF(184,262),QPrinter::Millimeter);
        printer.setPageMargins(140,100,20,20,QPrinter::Millimeter);
        break;
    case 2:
        font.setPointSize(16);
        envelopeDocument->setDefaultFont(font);
        envelopeDocument->setPlainText(addressText);

        printer.setPaperSize(QSizeF(227,324), QPrinter::Millimeter);
        printer.setPageMargins(170,120,30,40,QPrinter::Millimeter);
        break;
    }

    QPrintPreviewDialog preview (&printer,this);
    preview.setWindowFlags(Qt::Window);
    connect(&preview, SIGNAL(paintRequested(QPrinter *)),SLOT(printPreview(QPrinter *)));
    preview.exec();
}

void MainWindow::printPreview(QPrinter *p)
{
    envelopeDocument->print(p);
}

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-24 19:42:59

你可以尝试下面的代码,它可能会帮助你…

代码语言:javascript
复制
QPrinter printer(QPrinter::ScreenResolution);
printer.setPaperSize(QPrinter::A4);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName( fileName );
// printer.setPageMargins(0.925, 0.8, 0.5, 0.8, QPrinter::Inch);

QSizeF paperSize;
paperSize.setWidth(printer.width());
paperSize.setHeight(printer.height());
document->setHtml(html);
document->setPageSize(paperSize); // the document needs a valid PageSize
document->print(&printer);

当您参考print()的源代码时,您将认识到只有在没有有效的QTextDocument.pageSize()时才定义QPointF pageNumberPos。在printPage()中,如果pageNumberPos不为空,则只打印页码。因此,只需设置一个有效的QTextDocumtent.pageSize(),打印文档上就没有页码了。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9430133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档