首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何暂时禁用Qt (5)高dpi缩放?

如何暂时禁用Qt (5)高dpi缩放?
EN

Stack Overflow用户
提问于 2022-01-23 00:02:59
回答 1查看 477关注 0票数 1

我知道,在创建QApplication::setAttribute( Qt::AA_DisableHighDpiScaling );实例之前,可以通过调用QApplication来禁用整个应用程序的新闻部缩放。但是,是否可以将QPainter/QGraphicsScene/QGraphicsView设置为忽略DPI?

我希望我的应用程序中的所有部件都能正常运行。我只想绘制一个网格,在一个视图,没有新闻部缩放。该设置修复了网格,但它阻止了小部件的缩放。

注:我不能轻易地破坏图形项目的规模,因为我不知道确切的新闻部。在任何地方,我都无法找到一个确切解释QPainter如何绘制的值。它看起来很神奇。我也不想尝试这样做,因为可能的数字不稳定,只是附加的因素。我想暂时去除一个因素..。

EN

Stack Overflow用户

回答已采纳

发布于 2022-02-11 13:56:21

简短的回答是否定的;高dpi的处理就是全部或什么都没有。

对于你用QPainter给自己画的东西,有几个有效的解决办法。第一种是应用逆标度。在这里,我不太担心数值的不稳定性;实际上,QPainter最终在内部实现了一个统一转换。就像这样:

代码语言:javascript
复制
QPainter p(myWidget);
qreal inverseDPR = 1.0 / myWidget->devicePixelRatio();
p.scale(inverseDPR, inverseDPR);

第二种方法是先呈现到QImage中,默认情况下它有DPR==1,然后将图像的DPR设置为小部件的DPR,然后再将图像绘制到小部件。这样,人们就可以避免在绘画过程中缩放图像。就像这样:

代码语言:javascript
复制
QImage img(...);
// ... paint into image
img.setDevicePixelRatio(myWidget->devicePixelRatio());
QPainter p(myWidget);
p.drawImage(... image ...);
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70818143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档