首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPrinter打印表和文本

QPrinter打印表和文本
EN

Stack Overflow用户
提问于 2015-03-15 17:55:54
回答 1查看 1.3K关注 0票数 0

我试图在相同的页面上显示一个QTextTable和一些我正在使用QPainter创建的文本。当我把QTextTable放在QPainter上面时,唯一打印的就是表,但是当我在QTextTable上面有QPainter时,没有什么,甚至没有页码。如何同时显示QTextTable和文本?

代码语言:javascript
复制
QPrinter Print(QPrinter::HighResolution);
Print.setPaperSize(QPrinter::A4);
Print.setOrientation(QPrinter::Landscape);
Print.setDuplex(QPrinter::DuplexAuto);
Print.setOrientation(QPrinter::Portrait);
Print.newPage();
QPrintDialog Printdialog(&Print);
Printdialog.setWindowTitle("Print");
Printdialog.exec();
QPainter painter;
QRect rect(0,0,250,250);
painter.drawText(100, 100, "Test");
painter.begin(&Print);
QTextCursor cursor(ui->textBrowser->textCursor());
cursor.movePosition(QTextCursor::Start);
QTextTable *table = cursor.insertTable(ui->tableWidget_Invoice->rowCount() +1, 5);
table->cellAt(0,0).firstCursorPosition().insertText("Product Code");
table->cellAt(0,1).firstCursorPosition().insertText("Product Description");
table->cellAt(0,2).firstCursorPosition().insertText("Qty");
table->cellAt(0,3).firstCursorPosition().insertText("Unit Price");
table->cellAt(0,4).firstCursorPosition().insertText("Total Price");
for(int x = 0; x<ui->tableWidget_Invoice->rowCount(); x++) //Insert Contents of Form Table Into Printout Table
{
    table->cellAt(x+1,0).firstCursorPosition().insertText(ui->tableWidget_Invoice->item(x,2)->text());
    table->cellAt(x+1,1).firstCursorPosition().insertText(ui->tableWidget_Invoice->item(x,1)->text());
    table->cellAt(x+1,2).firstCursorPosition().insertText(ui->tableWidget_Invoice->item(x,0)->text());
    table->cellAt(x+1,3).firstCursorPosition().insertText(ui->tableWidget_Invoice->item(x,3)->text());
    table->cellAt(x+1,4).firstCursorPosition().insertText(ui->tableWidget_Invoice->item(x,4)->text());

}
ui->textBrowser->print(&Print);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-16 19:26:33

您需要做的不是从小部件中打印,而是必须将其呈现给Qpainter。您将使用的代码如下。

代码语言:javascript
复制
double xscale = Print.pageRect().width()/double(ui->textBrowser->width());
double yscale = Print.pageRect().height()/double(ui->textBrowser->height());
double scale = qMin(xscale, yscale);
painter.translate(Print.paperRect().x() + Print.pageRect().width()/2,
                           Print.paperRect().y() + Print.pageRect().height()/2);
painter.scale(scale, scale);
painter.translate(-width()/2, -height()/2);
painter.drawText(10,10, "TEST");
ui->textBrowser->render(&painter);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29064155

复制
相关文章

相似问题

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