QQuickItem派生类的高DPI缩放

时间:2016-08-08 19:53:52

标签: c++ qt qml qtquick2 qt-quick

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

Correct display of QQuickItem

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

Incorrect display of QQuickItem

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

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

1 个答案:

答案 0 :(得分:2)

所以我通过将QSGTexture的大小除以QQuickWindow :: effectiveDevicePixelRatio()来解决这个问题,并且还将通过该比率创建纹理的图像的大小相乘。 如果您使用QImage绘制文本,您还应该将此字体的大小乘以此比率。同样的事情应该用几何形状和QPixmap :: scaled()。

完成