![]() |
|
|
![]()
|
|
| math64 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Делаю печать QSqlTableModel через QWebView с QPrintPreviewDialog. Для каждой строки формируется html-страница, которую нужно напечатать на отдельной странице. Используется QWebView потому, что в QTextEdit html релизован не полностью (например, нельзя настроить рамку таблицы).
Если сделать
QPrintPreviewDialog покажет только одну страницу и её напечатает. Как напечатать остальные? При
"печать" в preview происходит долго, затем показывается только одна страница. Можно ли проконтролировать, что один html займет только одну страницу? |
||||
|
|||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Если вставить все страницы в один html и разделить их с помощью <p style='page-break-before:always;'/> то печатается правильно, но ожидать появления preview на экране приходится долго.
Если делить с помощью <p style='page-break-after:always;'/> со второй страницы верхнее поле игнорируется. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Другой способ печати - вместо html нарисовать форму в редакторе ресурсов.
+ добавление ProgressDialog при необходимости Весь процесс печати контролируется, при обрыве печати знаем какаие страницы напечатаны etc. При этом не нужно самому вычислять все координаты, как при самостоятельном программировании печати. Внутри QLabel можно использовать ограниченный html - возможностей которого обычно хватает, с учётом того, что можно самостоятельно разместить метку на виджете, а горизонтальные, вертикальны линии и рамки можно рисовать с помощью QFrame. Но: как вычислить размер виджета, чтобы он по ширине совпадал с шириной страницы (без полей), а по высоте - не превышал? У меня сейчас размеры виджета 676x741 - чуть меньше, чем нужно по ширине и меньше по высоте (A4). Зависят ли нужные размеры от принтера, дисплея, операционной системы? Как отличить печать в Preview или на реальный принтер? Если в Preview напечатать только одну страницу (в данном случае они все похоже и предпросмотр всех ни к чему), то можно ли будет напечатать на принтер все и сможет ли пользователь выбрать печатаемые страницы? Это сообщение отредактировал(а) math64 - 18.2.2012, 19:11 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
При печати с помощью виджета получается следующий недостаток: виджет проектируется под разрешение экрана (96 пикселей на дюйм),
по умолчанию включена двойная буферизация, и картинка на принтере получится размазанной. Как отключить двойную буферизацию? |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |