gpt4 book ai didi

c++ - 如何根据 QDialog 的标题长度调整其大小?

转载 作者:行者123 更新时间:2023-12-03 08:52:10 27 4
gpt4 key购买 nike

我的一个对话框窗口的标题被缩短(如“我的对话框...”)。如果对话框稍微宽一点,整个标题就会完整显示,看起来会更好。

Qt 中似乎没有设置可以做到这一点。我在这里找到了 QMessageBox 的 hack:Can QMessageBox::about adjust size to title length? ,但并不通用。例如,它还必须考虑窗口标题左侧和右侧图标的大小,以计算出一个非常好的最小尺寸,同时标题仍然完全显示。

有通用的方法可以实现这一点吗?还有一种简单的方法吗?或者这是过度设计?

最佳答案

这个目标不仅值得怀疑(参见 vahanco 评论),而且很难实现,因为窗口标题栏根本不是 Qt 领域:除了能够设置其文本之外并设法使用窗口标志显示或隐藏关闭/最小/最大按钮,那里几乎没有其他控制。

顺便说一句,设置对话框最小宽度的一种非常原始的方法可以(可以)为整个文本腾出空间:

const QString text = "Very very very very very very very very very very very very very long window title";
setWindowTitle(text);

QFontMetrics metrics(font(), this);
setMinimumWidth( metrics.horizontalAdvance(text));

这不能开箱即用,而且文本很可能会被剪切,因为使用的字体应该与标题栏中使用的字体相同(通常不是) t) 并且我们没有考虑框架宽度、图标宽度、标题栏按钮宽度以及窗口管理器拥有且 Qt 完全不知道的其他所有内容。

因此,您可以计算出所有这些东西需要多少额外空间,并使用完全任意的额外填充来调整宽度,例如

setMinimumWidth( metrics.horizontalAdvance(text) + 256);

也许会得到你一开始想要的东西(如果你仍然真的想要它)。

关于c++ - 如何根据 QDialog 的标题长度调整其大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58115463/

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