我想控制Qt 5.2.1 QML / C ++应用中所有Text元素的pointSize-to-pixel缩放。
我有一个QML单例组件,其目标显示属性(如宽度,高度和点间距)可计算常见尺寸的适当像素大小,例如触摸屏按钮的建议大小(以像素为单位)。这适用于我编写的控件,但Text元素有一个非常好的 font.pointSize ,如果我可以设置用于文本缩放的逻辑DPI,我想使用它。
在我的96 DPI开发屏幕上调试时,我使用它来模拟具有非常不同的屏幕DPI的目标设备。例如,我想运行我的应用程序,其目标是1280x720 133DPI显示器,并具有如下元素:
Text { font.pointSize: 72; text: “Xy” }
显示133像素高,而不是我得到的96像素高文本,因为操作系统告诉Qt我连接了96 DPI显示器。我想覆盖我的应用程序的逻辑DPI缩放。
我可以通过QGuiApplication QScreen列表看到 logicalDotsPerInchX 。有大量关于如何获得逻辑DPI的文档。但我找不到任何有关如何更改它的信息。
如何更改Qt应用的逻辑DPI?
答案 0 :(得分:0)
我认为你不能简单地改变QScreen类中的DPI值(只有公共getter方法)。 如果你修改QScreen类并自己添加一个公共setter或者其他东西然后重新编译Qt,也许会有一些“黑客”问题,但这可能是一些工作并且需要花费很多时间......
另一个解决方案可能是只为字体大小添加比例因子?我不知道你有多少,但可以简单地在QML中完成,我使用类似的东西甚至用于生产设置,以便将字体和其他尺寸适当地扩展到设备。
你可以use Screen.pixelDensity
或者只是定义你的自定义QML属性并将其乘以所有字体大小?如果你这样做,你可以在应用程序运行时动态更改大小。