首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QWebView:打印问题

QWebView:打印问题
EN

Stack Overflow用户
提问于 2013-03-26 19:17:08
回答 1查看 1.5K关注 0票数 5

我正在尝试通过QWebView创建报告,通过QPrintPreviewDialog显示它并打印它。假设我想创建拆分为几个页面的100行表格,并将当前行号添加到每一页的页脚(我的实际任务的抽象变体)。我的代码:

代码语言:javascript
复制
    void MainWindow::preview(){
    QPrinter printer;
    printer.setPageSize(QPrinter::A4);
    printer.setOrientation(QPrinter::Portrait);
    printer.setPageMargins(10,10,10,10,QPrinter::Millimeter);

    QPrintPreviewDialog print_preview(&printer, this);
    print_preview.setWindowState(Qt::WindowMaximized);
    connect(&print_preview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(paint_pages(QPrinter*)));
    print_preview.exec();
}

void MainWindow::paint_pages(QPrinter *printer){
    QList<QWebView*> pages;
    QWebView *current = 0;
    QPainter painter(printer);
    int i = 0;
    while(i <= 100){
        current = new QWebView();
        pages << current;
        i = populate_web(current, printer, i);
    }
    int pc = pages.count();
    for(i = 0; i < pc; i++){
        if(i != 0) printer->newPage();
        pages.at(i)->render(&painter);
    }
    for(i = 0; i < pc; i++)
        delete pages.at(i);
}


int MainWindow::populate_web(QWebView *pg, QPrinter *printer, int n){
    QString html = "<html><body>";
    html += "<table cellspacing=0 border = 1 style='border-collapse: collapse'>";
    int page_height = printer->paperRect(QPrinter::Point).height();
    for(++n; n <= 100; n++){
        html += QString("<tr><td width=200>%1</td><td width=200>%2</td><td width=300>%3</td></tr>").arg(n).arg(n*n).arg(n*n*n);
        QString html2 = html + "</table></body></html>";
        pg->setHtml(html2);
        int content_height = pg->page()->mainFrame()->contentsSize().height();
        if(content_height + 20 > page_height){
            html += "</table>";
            html += QString("<p>Current value: %1</p>").arg(n);
            break;
        }
    }
    if(n > 100) html += "</table>";
    html += "</body></html>";

    pg->setHtml(html);
    return n;
}

所以,我希望得到整个纸张矩形的表格,除了10毫米的页边距。但我得到的不是它,而是一些奇怪的东西(PICTURE HERE);更重要的是,滚动条不会出现在第一页上,只是从第二页开始。我该怎么做才能用我的表格填充整个页面并从滚动条释放页面?

EN

回答 1

Stack Overflow用户

发布于 2014-09-05 15:04:59

后一行:

代码语言:javascript
复制
html += "</body></html>";

添加下面这行:

代码语言:javascript
复制
pg->setFixedSize(QSize(printer->width(),printer->height()));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15635706

复制
相关文章

相似问题

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