【问题标题】:Style sheets / Qt Designer support for high dpi screens?样式表/Qt Designer 是否支持高 dpi 屏幕?
【发布时间】:2016-06-09 01:54:52
【问题描述】:

今天我已将我的应用程序从 Qt5.5 移植到 Qt5.6RC。在我的高 dpi 屏幕上运行它,小部件看起来很小。在阅读this 并设置QT_AUTO_SCREEN_SCALE_FACTOR to "1" 后,至少它可以再次使用。

然而they say:

从长远来看,应用程序应该适应运行 未修改:

1) 始终使用 QPainter 绘图 API 的 qreal 版本。
2) 根据屏幕大小调整窗口和对话框的大小。
3) 将布局和绘图代码中的硬编码大小替换为根据字体度量或屏幕大小计算的值。

并非所有样式表属性都支持em(“.. from font metrics”)。不知道我将如何在样式表中使用相对的“屏幕大小”。另外Qt Designer在很多地方只支持px,如下图。

考虑到我不想放弃设计器和样式表,我有哪些选择来创建真正的 Qt 招聘应用程序?


相关(但没有回答我的问题)

【问题讨论】:

  • 任何解决方案了吗?我面临着类似的问题,并正在考虑实施答案中的建议。

标签: c++ qt qt-creator qt-designer qt5.6


【解决方案1】:

如果您真的喜欢使用 Designer,不妨考虑以编程方式更新样式表。这是我在必须跨多个平台部署的应用程序中实现的一个非常 hacky 的修复程序。这意味着对所有内容都使用px 测量,因为它是唯一被广泛支持的测量。

如您所知,Qt 字体不支持相对于em 单位的'screen-size':

来自 Qt5 文档:https://doc.qt.io/qt-5/stylesheet-reference.html Qt 仅限于 pt 和 px 字体大小,任何其他大小必须以 px、em 或 ex 为单位。

您开发出满意的 UI 的显示器及其规格将成为您的应用程序的标准。在窗口的构造函数中,您可以计算比例因子,即新设备的 DPI 除以您知道您的应用程序看起来不错的“标准 DPI”。从那里,您只需将您的小部件/字体样式表乘以该比例因子。这听起来可能很麻烦(而且确实如此),但这意味着遍历 ui->myWidget->getStyleSheet() 返回的 QString 并缩放 px 子字符串之前的所有数字实例。

这对我来说可以放大/缩小字体和小部件大小,但显然会增加开销。我也非常喜欢使用 Designer 的简单性,但是,afaik,在 Designer 中创建可扩展的 UI 仍然很困难。切换到以编程方式设计 UI 最终取代了我对应用程序的 hacky 修复。

注意:注意您使用的字体也很重要。如果您的字体不是系统支持的字体,px 值将出现意外行为,因为默认字体将替换它。

【讨论】:

  • 我计划为我的应用程序实现这一目标。你能给我们一些代码吗?你现在有更好的选择吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
相关资源
最近更新 更多