Рендеринг QWidget в PDF с возможностью выбора текста
Предположим, что
QWidget
как контейнер для других виджетов. Виджеты в этом контейнере представляют собой виджет с макетом
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