C++ 使用可选文本将QWidget呈现为PDF

C++ 使用可选文本将QWidget呈现为PDF,c++,qt,qt5.15,C++,Qt,Qt5.15,假设一个QWidget作为其他widget的容器。此容器中的小部件是一个布局为QVBoxLayout的小部件,它应该显示两列QLabel。之后,出现了一个新的小部件,它是QTableView 现在,我想将上述小部件呈现为带有可选文本的PDF文件。现在,我设置了我的QPrinter和相应的QPainter QPrinter* printer = new QPrinter(selectedPrinterInfo, QPrinter::ScreenResolution); printer->se

假设一个
QWidget
作为其他widget的容器。此容器中的小部件是一个布局为
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,该PDF具有可选择的文本。我这种方法的问题
QPicture
在正确显示此表方面存在严重问题。例如,我将
AlternatingRowColors
设置为
true
,现在行颜色与网格线重叠。那么,是否有任何方法可以将
QWidget
直接与
QPainter
一起呈现为PDF格式,或者不使用
QPicture