2010-01-07 8 views
4

J'ai un QWebView qui affiche un contenu HTML et je le style CSS pour le texte:Des différences de taille de police (DPI) dans QWebView par rapport à tous les autres QWidgets?

body { font-size: 10pt; } 

La fenêtre avec le QWebView a également un champ QTextEdit, pour que je mets la police comme ceci:

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

Malheureusement, le texte affiché dans le QWebView est légèrement plus grand que le texte affiché dans QTextEdit. J'ai le sentiment que cela a quelque chose à voir avec les paramètres DPI différents dans le QWebView.

Est-il possible d'obtenir les mêmes tailles de police pour les deux affichés QWebView et QTextEdit?

Merci!

Répondre

2

Explication de ce comportement a été donné sur the bugreports:

Il semble vrai que WebKit prend 96 dpi en résolution fixe. Si c'est ainsi que le contenu Web est conçu, nous avons un problème pour le changer, car d'autres personnes s'attendent à ce que WebKit rende le contenu Web comme dans les navigateurs Web. Voir aussi https://www.webkit.org/blog/57/css-units/

Ils ont proposé deux solutions:

QWebView fournit setZoomFactor et setTextMultiplier que je pense qu'elle pourrait être utilisée pour obtenir le comportement souhaité (correspondant à la QWidget).

Vous pouvez calculer le facteur de zoom et multiplicateur de texte à l'aide DPI actuel:

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

En utilisant QWebSettings::ZoomTextOnly vous pouvez appliquer un zoom sur le texte.

1

C'est un peu compliqué. J'ai trouvé un bon moyen d'obtenir des mesures précises de DPI est de QApplication, par exemple:

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

En ce qui concerne la police va, vous pouvez utiliser QWidget::fontMetrics() pour obtenir une bonne information de police métrique.

Je pense qu'une combinaison des deux vous donnera une certaine cohérence entre votre vue Web et l'édition de texte.

Bonne chance.