Russian Qt Forum

Qt => Печать => Тема начата: mokynis от Декабрь 08, 2023, 15:42



Название: странно ведет себя setPageMargins
Отправлено: mokynis от Декабрь 08, 2023, 15:42
пытаюсь выяснить, какой размер таблицы будет удобней. Элементарный html:
Код:
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=utf-8'>
<meta http-equiv='content-style-type' content='text/css'>
</head>
<body>
<table border=1 cellspacing=0 cellpadding=0>
<tr>
<th width=800>1</th>
<th width=200>2</th>
</tr>
</table>
</body>
</html>
Распечатываю:
Код:
QPrinter *printer=new QPrinter();
printer->setOrientation(QPrinter::Landscape);
printer->setPageSize(QPageSize(QPageSize::A4));
printer->setPageMargins(QMarginsF(5,5,5,5),QPageLayout::Millimeter);
this->docum=new QTextDocument();
this->docum->setHtml(strHtml);
Менял отступы пол дня, все равно левое и верхнее поля не уменьшаются. QT5.3.2. В QT4 все работало. Что я не так делаю?


Название: Re: странно ведет себя setPageMargins
Отправлено: mokynis от Декабрь 09, 2023, 14:45
ладно, бес с ним, с setPageMargins. Может, есть способ как-то распечатать таблицу, чтобы она заняла лист по-максимуму? Имеется стандартный бланк, цель программы-не заполнять его каждый раз руками, а брать данные из базы и выводить в бланке нужное. При существующей проблеме вся программа летит коту под хвост


Название: Re: странно ведет себя setPageMargins
Отправлено: sergek от Декабрь 09, 2023, 16:53
QPrinter::setFullPage не помогает?


Название: Re: странно ведет себя setPageMargins
Отправлено: mokynis от Декабрь 09, 2023, 22:23
нет, не помогает


Название: Re: странно ведет себя setPageMargins
Отправлено: sergek от Декабрь 10, 2023, 11:31
Видимо, это застарелая проблема (QTBUG-32987): https://stackoverflow.com/questions/37964891/qprinter-margin-does-not-work-as-expected (https://stackoverflow.com/questions/37964891/qprinter-margin-does-not-work-as-expected).
Предлагается бороться с отступом в QTextDocument путем установки размера страницы. Я попробовал и QPageLayout::setMargins, и
Код
C++ (Qt)
docum->setPageSize(QSizeF(printer->pageLayout().pageSize().size(QPageSize::Point))),
но ничего хорошего не получил. Правда, setPageSize на отступы все же как-то влияет, но не так, как хочется.
Попробуйте поискать в этом направлении.


Название: Re: странно ведет себя setPageMargins
Отправлено: mokynis от Декабрь 10, 2023, 17:00
спасибо за усилия.
У меня Ваш вариант открыло почти как надо, в моем случае (таблица с текстом) таблица растягивается по размеру листа, но вместе с ней растягивается и текст (я так понимаю программа просто растягивает таблицу, как рисунок, искажая ее, лишь бы впихнуть в требуемые границы). Буду сохранять в виде .html, а потом открывать в Excel-он хорошо читает таблицы из .html. Проблема в том, что работаю в Linux, а Excel на виртуалке. Неудобно будет работать