Рендеринг 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

0 ответов

Другие вопросы по тегам