16

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

但是他们说

从长远来看,应用程序应该适合在未经修改的情况下运行:

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

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

图标大小

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


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

4

1 回答 1

4

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

如您所知,Qt 字体不支持“屏幕大小”相对em单位:

来自 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值将出现意外行为,因为默认字体将替换它。

于 2019-07-26T21:38:53.890 回答