首页 文章

如何更改QML应用程序的逻辑DPI?

提问于
浏览
6

我想控制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” }

显示133像素高,而不是我得到的96像素高文本,因为操作系统告诉Qt我连接了96 DPI显示器 . 我想覆盖我的应用程序的逻辑DPI缩放 .

我可以通过QGuiApplication QScreen列表看到 logicalDotsPerInchX . 有大量关于如何获得逻辑DPI的文档 . 但我找不到有关如何更改它的任何信息 .

如何更改Qt应用程序的逻辑DPI?

1 回答

  • 0

    我认为你不能简单地改变QScreen类中的DPI值(只有公共getter方法) . 如果你修改QScreen类并自己添加一个公共setter或者其他东西然后重新编译Qt,也许有一些“黑客”问题,但这可能是一些工作并需要很多时间......

    另一种解决方案可能是只为字体大小添加比例因子?我不知道你有多少,但可以简单地在QML中完成,我使用类似的东西甚至用于 生产环境 设置,以便将字体和其他尺寸适当地扩展到设备 . 您可以 use Screen.pixelDensity 或只是定义您的自定义QML属性并将其乘以所有字体大小?如果您这样做,您可以在应用程序运行时动态更改大小 .

相关问题