Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 样式表/Qt设计器是否支持高dpi屏幕?_C++_Qt_Qt Creator_Qt Designer_Qt5.6 - Fatal编程技术网

C++ 样式表/Qt设计器是否支持高dpi屏幕?

C++ 样式表/Qt设计器是否支持高dpi屏幕?,c++,qt,qt-creator,qt-designer,qt5.6,C++,Qt,Qt Creator,Qt Designer,Qt5.6,今天我将我的应用程序从Qt5.5移植到Qt5.6RC。在我的高dpi屏幕上运行它,小部件看起来很小。读取并将QT\u自动屏幕\u缩放因子设置为“1”后,至少可以再次使用 然而: 从长远来看,应用程序应该适合于运行 未修改的: 1) 始终使用QPainter绘图API的qreal版本。 2) 根据屏幕大小调整窗口和对话框的大小。 3) 将布局和图形代码中的硬编码大小替换为根据字体度量或屏幕大小计算的值 并非所有样式表属性都支持em(“.from font metrics”)。不知道如何在样式表中使

今天我将我的应用程序从Qt5.5移植到Qt5.6RC。在我的高dpi屏幕上运行它,小部件看起来很小。读取并将
QT\u自动屏幕\u缩放因子设置为“1”
后,至少可以再次使用

然而:

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

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

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

考虑到我不想放弃设计器和样式表,我可以选择什么来创建真正的Qt hires应用程序


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

  • 甚至有点不清楚
    1em
    在Qt世界中的含义:

如果您真的使用了设计器,也许可以考虑以编程方式更新样式表。这是我在一个必须跨多个平台部署的应用程序中实现的一个真正的黑客补丁。这意味着对所有事物都使用

px
度量,因为它是唯一被广泛支持的度量

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

从Qt5文档: Qt仅限于pt和px字体大小,任何其他大小必须为px、em或ex

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

这在放大/缩小字体和小部件大小方面对我很有效,但显然增加了开销。我也非常喜欢使用设计器的简单性,但是,在设计器中创建可伸缩的UI仍然很困难。切换到以编程方式设计UI最终取代了我的应用程序的黑客补丁


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

我计划在我的应用程序中实现这一点。你能给我们提供一些代码吗?你现在有更好的选择吗?有解决办法吗?我面临着类似的问题,并且正在考虑实施答案中提出的建议。