[TD] MDIViewPage: Support printing/exporting arbitrary custom paper sizes for Qt5.

This commit is contained in:
Aapo
2021-01-19 11:03:24 +02:00
parent 7339646638
commit ff18dec065
2 changed files with 24 additions and 11 deletions

View File

@@ -312,23 +312,23 @@ void MDIViewPage::closeEvent(QCloseEvent* ev)
void MDIViewPage::attachTemplate(TechDraw::DrawTemplate *obj)
{
m_view->setPageTemplate(obj);
double width = obj->Width.getValue();
double height = obj->Height.getValue();
if (width > height) {
pagewidth = obj->Width.getValue();
pageheight = obj->Height.getValue();
#if QT_VERSION >= 0x050300
m_paperSize = QPageSize::id(QSizeF(pagewidth, pageheight), QPageSize::Millimeter, QPageSize::FuzzyOrientationMatch);
#else
m_paperSize = getPaperSize(int(round(pagewidth)), int(round(pageheight)));
#endif
if (pagewidth > pageheight) {
#if QT_VERSION >= 0x050300
m_paperSize = QPageSize::id(QSizeF(height, width), QPageSize::Millimeter);
m_orientation = QPageLayout::Landscape;
#else
m_paperSize = getPaperSize(int(round(width)), int(round(height)));
m_orientation = QPrinter::Landscape;
#endif
} else {
#if QT_VERSION >= 0x050300
m_paperSize = QPageSize::id(QSizeF(width, height), QPageSize::Millimeter);
m_orientation = QPageLayout::Portrait;
#else
m_paperSize = getPaperSize(int(round(width)), int(round(height)));
m_orientation = QPrinter::Portrait;
#endif
}
@@ -686,7 +686,11 @@ void MDIViewPage::printPdf(std::string file)
#endif
}
#if QT_VERSION >= 0x050300
printer.setPageSize(QPageSize(m_paperSize));
if (m_paperSize == QPageSize::Custom) {
printer.setPageSize(QPageSize(QSizeF(pagewidth, pageheight), QPageSize::Millimeter));
} else {
printer.setPageSize(QPageSize(m_paperSize));
}
#else
printer.setPaperSize(m_paperSize);
#endif
@@ -698,7 +702,11 @@ void MDIViewPage::print()
QPrinter printer(QPrinter::HighResolution);
printer.setFullPage(true);
#if QT_VERSION >= 0x050300
printer.setPageSize(QPageSize(m_paperSize));
if (m_paperSize == QPageSize::Custom) {
printer.setPageSize(QPageSize(QSizeF(pagewidth, pageheight), QPageSize::Millimeter));
} else {
printer.setPageSize(QPageSize(m_paperSize));
}
printer.setPageOrientation(m_orientation);
#else
printer.setPaperSize(m_paperSize);
@@ -715,7 +723,11 @@ void MDIViewPage::printPreview()
QPrinter printer(QPrinter::HighResolution);
printer.setFullPage(true);
#if QT_VERSION >= 0x050300
printer.setPageSize(QPageSize(m_paperSize));
if (m_paperSize == QPageSize::Custom) {
printer.setPageSize(QPageSize(QSizeF(pagewidth, pageheight), QPageSize::Millimeter));
} else {
printer.setPageSize(QPageSize(m_paperSize));
}
printer.setPageOrientation(m_orientation);
#else
printer.setPaperSize(m_paperSize);

View File

@@ -169,6 +169,7 @@ private:
QPrinter::Orientation m_orientation;
QPrinter::PaperSize m_paperSize;
#endif
qreal pagewidth, pageheight;
ViewProviderPage *m_vpPage;
QList<QGraphicsItem*> m_qgSceneSelected; //items in selection order