c – QQuickItem派生类的高DPI缩放

我在我的应用程序中使用QtQuickControls 2和QQuickItem派生类.设置AA_EnableHighDpiScaling属性后,我的智能手机上的所有QQuickControls 2组件都正确显示,但我的自定义类的对象缩放不正确.这是没有HighDpi缩放的应用程序,具有最小缩放(它的工作方式):

《c – QQuickItem派生类的高DPI缩放》

这是一个缩放最小缩放的那个:

《c – QQuickItem派生类的高DPI缩放》

似乎在第二个屏幕上对象缩放太多,我可以看到我用QPixmap或QImage绘制的所有纹理的方形像素.但是,我从外部存储器和QSGGeometryNode等节点加载的图像看起来是正确的.我可以关闭一个特定的QQuickItem的缩放吗?如果不是,我应该设置什么来正确渲染它?

此外,当我尝试在场景图节点树中使用大量QSGOpacityNodes在QQuickItem上设置不透明度时,我得到分段错误.是什么导致这个?

最佳答案 所以我通过将QSGTexture的大小除以QQuickWindow :: effectiveDevicePixelRatio()来解决这个问题,并且还将通过该比率创建纹理的图像的大小相乘.

如果您使用QImage绘制文本,您还应该将字体的大小乘以此比率.应该用几何形状和QPixmap :: scaled()完成同样的事情.

点赞