假设 aQWidget
作为其他小部件的容器。此容器中的小部件是具有布局的小部件QVBoxLayout
,应显示两列QLabel
. 之后出现了一个新的小部件,它是QTableView
.
我现在想将上述小部件呈现为带有可选文本的 PDF 文件。现在我设置了我QPrinter
的和对应QPainter
的
QPrinter* printer = new QPrinter(selectedPrinterInfo, QPrinter::ScreenResolution);
printer->setPageSize(QPageSize(QPageSize::A4));
printer->setOrientation(QPrinter::Portrait);
printer->setFullPage(true);
printer->setPageSize(QPrinter::A4);
printer->setOutputFormat(QPrinter::PdfFormat);
printer->setPageMargins(QMarginsF(15,15,15,15),QPageLayout::Unit::Millimeter);
printer->setOutputFileName(fileName);
printer->setResolution(300);
QPainter painter(printer);
现在我用
myWidget->render(&painter);
这会创建一个质量很好的 PDF,但它只是一个带有 pdf 文件的图像。文本不可选择。我使它可选择的方法是首先渲染myWidget
到QPicture
然后重播到QPainter
QPicture picture;
myWidget->render(&picture);
painter.drawPicture(0,0,picture);
这会创建一个具有可选文本的 PDF。我对这种方法QPicture
的问题在正确显示此表方面存在严重问题。例如,我设置AlternatingRowColors
为true
,现在行颜色与网格线重叠。那么是否有任何方法可以QWidget
直接使用QPainter
PDF 或任何其他方法来执行此操作而不使用QPicture