Russian Qt Forum
Май 02, 2024, 12:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [5.5] QWebView::print() и малый размер элементов  (Прочитано 5478 раз)
soaup
Гость
« : Август 11, 2016, 09:10 »

Уже задавали подобный вопрос год назад, а ответа так и нет. Разница в dpi монитора и принтера, и соответственно - малый размер элементов при печати HTML документа.
Есть идея масштабировать текст при помощи функции setTextSizeMultiplier(qreal multiplier). Мне бы знать формулу и как найти составляющие. DPI монитора вроде можно вычислить по формуле:
 sqrt(x^2+y^2)/диагональ.
А вот как найти DPI принтера и как потом вычислить необходимый коэффициент? Есть у QPrinter параметры logicalDpiX и logicalDpiY но к ним доверия нету - они всегда 96 возвращают. Может за это время еще какой-нибудь способ появился?
Записан
soaup
Гость
« Ответ #1 : Август 13, 2016, 16:57 »

Может тут все математикой какой можно решить... Есть данные о DPI монитора и DPI принтера, разрешении экрана и размерах страницы. Как высчитать коэффициент на который нужно увеличить размер шрифта? Нашел в справке Qt статью Scalability а там
Код
C++ (Qt)
qreal refDpi = 216.;
qreal refHeight = 1776.;
qreal refWidth = 1080.;
QRect rect = qApp->primaryScreen()->geometry();
qreal height = qMax(rect.width(), rect.height());
qreal width = qMin(rect.width(), rect.height());
qreal dpi = qApp->primaryScreen()->logicalDotsPerInch();
m_ratio = qMin(height/refHeight, width/refWidth);
m_ratioFont = qMin(height*refDpi/(dpi*refHeight), width*refDpi/(dpi*refWidth));
т.е. m_ratioFont по идее должен и быть этим самым коэффициентом. А на деле (проверял на нескольких мониторах) - в одних случаях меньше чем нужно, в других больше.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.136 секунд. Запросов: 21.