Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 与所有其他QWidget相比,QWebView中的DPI[字体大小]不同?_Css_Fonts_Qt4_Dpi_Qwebview - Fatal编程技术网

Css 与所有其他QWidget相比,QWebView中的DPI[字体大小]不同?

Css 与所有其他QWidget相比,QWebView中的DPI[字体大小]不同?,css,fonts,qt4,dpi,qwebview,Css,Fonts,Qt4,Dpi,Qwebview,我有一个QWebView,它显示一些HTML内容,我使用CSS设置文本样式: body { font-size: 10pt; } 带有QWebView的窗口也有一个QTextEdit字段,我为其设置了如下字体: QFont newFont; newfont.setPointSize(10); myEditField->setFont(newFont); 不幸的是,QWebView中显示的文本略大于qtexedit中显示的文本。我觉得这与QWebView中的DPI设置不同有关 有没有办

我有一个QWebView,它显示一些HTML内容,我使用CSS设置文本样式:

body { font-size: 10pt; }
带有QWebView的窗口也有一个
QTextEdit
字段,我为其设置了如下字体:

QFont newFont;
newfont.setPointSize(10);
myEditField->setFont(newFont);
不幸的是,
QWebView
中显示的文本略大于
qtexedit
中显示的文本。我觉得这与
QWebView
中的DPI设置不同有关

有没有办法让
QWebView
qtexedit
显示相同的字体大小


谢谢

这有点棘手。我发现从QApplication获得准确DPI测量的一个好方法,例如:

QWidget* window = QApplication::desktop()->screen();
int horizontalDpi = window->logicalDpiX(); 
就字体而言,您可以使用
QWidget::fontMetrics()
获得良好的字体度量信息

我认为两者的结合将使您的web视图和文本编辑之间具有一定的一致性


祝你好运。

有关此行为的解释已在以下网站上给出:

WebKit假设96 dpi为固定分辨率,这似乎是事实。如果这就是web内容的设计方式,那么我们在改变这一点时会遇到问题,因为还有其他人希望WebKit像在web浏览器中一样呈现web内容。 另见

他们提出了两种解决办法:

QWebView提供了我认为可以用来获得所需行为(与QWidget匹配)的功能

可以使用当前DPI计算缩放因子和文本倍增:

QWidget* window = QApplication::desktop()->screen();
const int horizontalDpi = window->logicalDpiX(); 
m_view->setZoomFactor(horizontalDpi / 96.0);
使用
QWebSettings::zoomtextly
可以仅对文本应用缩放