更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小变得更大

新手上路,请多包涵

我已经使用 Qt 创建了一些 GUI 应用程序。我的 GUI 应用程序包含按钮和单选按钮等控件。当我运行应用程序时,按钮内的按钮和字体看起来很正常。当我将显示的 DPI 缩放大小从 100% 更改为 150% 或 200% 时,无论分辨率如何,控件的字体大小都会渲染得更大,但不会显示控件大小(按钮、单选按钮)。因此,控件内的文本被截断。请看附图。

DPI 缩放大小设置为 100% 时的 Qt 应用程序外观

DPI 缩放大小设置为 100% 时的 Qt 应用程序外观

DPI 缩放大小设置为 200% 时的 Qt 应用程序外观

DPI 缩放大小设置为 200% 时的 Qt 应用程序外观

我也在一些平板电脑上运行我的应用程序。在平板电脑中,DPI 比例值应大于 150%,否则一切将显示非常小。

我在网上搜索在 Qt 中创建 UI 应用程序,无论分辨率和 DPI 比例值如何,但没有运气。所以我在这里发布我的任务。请让我知道是否有某种方法可以摆脱这种情况。

原文由 Arun 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
1 个回答

有很多方法。

  • 其中之一是有参考(高度、宽度和 DPI),当您在不同的设置上运行应用程序时,您只需要获取高度、宽度和每英寸的逻辑点数
  • 你可以使用 qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInch();

然后你通过将它乘以计算的比率来计算新的字体大小。

 qreal refDpi = 216.;
qreal refHeight = 1776.;
qreal refWidth = 1080.;
QRect rect = QGuiApplication::primaryScreen()->geometry();
qreal height = qMax(rect.width(), rect.height());
qreal width = qMin(rect.width(), rect.height());
qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInch();
m_ratio = qMin(height/refHeight, width/refWidth);
m_ratioFont = qMin(height*refDpi/(dpi*refHeight), width*refDpi/(dpi*refWidth));

  • 第二种方法,非常简单,更高效并且我个人使用它,只需使用样式表!!,并且字体大小不会因您的 DPI 缩放而改变。

例如,您可以使用这样的字体属性

font: bold italic large "Times New Roman";

原文由 Ahmed Elbadawy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题