gpt4 book ai didi

c++ - 必要时扩展Qt接口(interface)

转载 作者:太空狗 更新时间:2023-10-29 21:26:15 26 4
gpt4 key购买 nike

我正在做一个 Qt 项目,我注意到一些 GUI 表单一直存在问题。该表单在 KDE(下图)和 Windows 上看起来不错,但是当应用程序在任何基于 GNOME3 的应用程序(如 Unity 或 GNOME3 本身)上运行时,表单的某些部分会隐藏起来。 (上图,Sort Ascending 单选按钮下方的所有内容都被截断)

问题似乎与 Qt 布局如何处理大字体有关。如果用户使用正常大小的系统字体(<= 10pt)一切正常。如果他们使用较大的字体,则表格不足以容纳所有内容。受此错误影响的其他形式只是拥挤,但这并不像重要控制越界那么严重。如果我放大对话框,布局不想调整自身大小以利用新空间。有没有一种简单的方法可以做到这一点,还是我需要对其进行硬编码?最初代码阻止对话框在运行时调整大小,但恢复该功能并没有修复错误。即使对话框可以扩展,问题是布局不会随之扩展。

到目前为止,我已将所有受影响的表单都放大以补偿此错误,但在字体大小合适的 Windows 和 KDE 系统上,让对话框比所需的大得多看起来很奇怪。有没有办法使受影响的对话框/布局自行调整大小,以便在运行时一切正常?如果是这样,当 GUI 的某些部分超出范围时,程序将如何检测到它?我不希望强制使用特定的字体大小(由于视力问题,有些人可能更喜欢大字体)。

在此先感谢您的帮助。

Part of the options gets cut off (right below Sort Ascending)

This is how it's supposed to look

最佳答案

解决方法是在显示表单时使用不同的方法。我将描述一种更动态的方式。我已经在具有 96 和非常高 DPI 模式(超过 120)的 Windows 上成功地使用了这种方法。

1.查询操作系统并获取用户为特定系统项目选择的字体;说出用于窗口标题或系统对话框的字体。如果他们愿意,您也可以允许用户稍后选择他们的字体。尽可能使用 True Type 字体。

2。使用该字体,构造一个字符串对象,您将用于标签或编辑控件(我不知道这对于 QT 是什么,对于 Windows 它是 GetTextExtentPoint32)并将其传递给系统函数以确定宽度和高度适合您环境的字符串。

3。给定上述值,放置控件并根据需要使用控件周围的填充动态调整窗体大小。对于按钮,您可能总是在按钮上方和下方添加一定比例的像素以进行品味。

4.对于位图和 jpeg 等图形元素,再次向操作系统查询显示器的当前 DPI 设置,并使用更大的预制资源。自然地,这些元素周围的所有文本都将动态地动态放置。

请注意,在 Windows 上,您需要使用 list 将您的 exe 标记为高 dpi 感知。

关于c++ - 必要时扩展Qt接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12081679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com