样式表/ Qt Designer支持高dpi屏幕?

时间:2016-02-26 01:28:03

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

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

然而they say

  

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

     

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

并非所有样式表属性都支持em(“..来自字体指标”)。不知道我如何在样式表中使用“屏幕尺寸”相对。此外,Qt Designer仅在许多地方支持px,如下所示。

icon size

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

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

2 个答案:

答案 0 :(得分:2)

如果真的很喜欢使用Designer,则可以考虑以编程方式更新样式表。这是我在必须跨多个平台部署的应用程序中实施的一个非常棘手的修复程序。这意味着对所有内容都使用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的结果最终取代了我为应用程序修改的漏洞。

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

答案 1 :(得分:-1)

不确定它会有所帮助,因为我从来没有真正使用过我的qt应用程序的设计器,但我想在某些时候你会被迫像某些网站那样做,并根据你的屏幕分辨率有一些专用的qss文件。

我认为在CSS3中这样做很容易,不知道qss支持什么。我发现这篇文章解释了如何检索主显示屏的屏幕分辨率: QT getting the screen resolution without the extended monitor

对于“1em”问题,即使您没有设置任何字体大小,默认情况下也会选择一个,因此1em意味着我想要100%的默认字体大小。

问候。