Различаются ли DPI [размеры шрифта] в QWebView по сравнению со всеми другими QWidgets? - PullRequest
4 голосов
/ 07 января 2010

У меня есть QWebView, который отображает некоторое содержимое HTML, и я использовал CSS для стилизации текста:

body { font-size: 10pt; }

Окно с QWebView также имеет поле QTextEdit, для которого я установил шрифт следующим образом:

QFont newFont;
newfont.setPointSize(10);
myEditField->setFont(newFont);

К сожалению, текст, отображаемый в QWebView, немного больше, чем текст, отображаемый в QTextEdit. У меня такое ощущение, что это как-то связано с тем, что настройки DPI отличаются в QWebView.

image

Есть ли способ получить одинаковые размеры шрифта для QWebView и QTextEdit?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 25 декабря 2014

Объяснение этого поведения дано для сообщений об ошибках :

Похоже, что WebKit принимает 96 dpi в качестве фиксированного разрешения. Если так устроен веб-контент, у нас есть проблема с его изменением, потому что есть другие люди, которые ожидают, что WebKit будет отображать веб-контент, как в веб-браузерах. Смотри также https://www.webkit.org/blog/57/css-units/

Они предложили два решения:

QWebView предоставляет setZoomFactor и setTextMultiplier , которые, как я считаю, могут использоваться для получения желаемого поведения (соответствующего QWidget).

Вы можете рассчитать коэффициент масштабирования и множитель текста, используя текущий DPI:

QWidget* window = QApplication::desktop()->screen();
const int horizontalDpi = window->logicalDpiX(); 
m_view->setZoomFactor(horizontalDpi / 96.0);

Используя QWebSettings::ZoomTextOnly, вы можете применять масштабирование только к тексту.

1 голос
/ 20 января 2010

Это немного сложно. Я нашел хороший способ получить точные измерения DPI из QApplication, пример:

QWidget* window = QApplication::desktop()->screen();
int horizontalDpi = window->logicalDpiX(); 

Что касается шрифта, вы можете использовать QWidget::fontMetrics() для получения хорошей информации о метриках шрифта.

Я думаю, что сочетание того и другого даст вам некоторую согласованность между вашим веб-представлением и редактированием текста.

Удачи.

...