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