Qt:窗口大小的方形约束

Qt:窗口大小的方形约束,qt,widget,Qt,Widget,我有一个QDockWidget,里面有一个正方形的widget。我希望``QDockWidget可以调整大小,但始终保持方形,而默认情况下,它可以被过度拉伸 需要设置什么大小策略、大小提示等组合才能执行此操作?您必须覆盖resizeEvent 在这种方法中,你必须比较宽度和高度 如果它们不相等,请将它们设置为与宽度或高度相关的相等数字。当调用resizeEvent()时,小部件已经有了新的大小。因此,从中调用resize(),可能会导致闪烁 您可以尝试重新实现QWidget::heightFor

我有一个
QDockWidget
,里面有一个正方形的widget。我希望``QDockWidget可以调整大小,但始终保持方形,而默认情况下,它可以被过度拉伸


需要设置什么大小策略、大小提示等组合才能执行此操作?

您必须覆盖resizeEvent

在这种方法中,你必须比较宽度和高度

如果它们不相等,请将它们设置为与宽度或高度相关的相等数字。

当调用
resizeEvent()
时,小部件已经有了新的大小。因此,从中调用
resize()
,可能会导致闪烁


您可以尝试重新实现
QWidget::heightForWidth(int)
;只要
QDockWindow
处于停靠状态,并且Qt的布局管理器可以控制它,这可能就行了。但是IIRC,至少在X11上,
heightForWidth()
在顶级窗口小部件(windows)上不起作用。

我希望有一种比这更简单的方法。如果我这样做,我就必须弄清楚用户的意图(用户是否试图增加或减少宽度或高度,或两者兼而有之?),否则我将覆盖用户试图做的事情。。。无论如何,谢谢。也许你可以在调整尺寸时选择大一点的,但这可能会导致收缩问题。(和vise verca在增长时选择较小的价值)。因此,您应该了解如何实现一种机制。它是当用鼠标拉伸时到小部件另一个角的距离。您应该了解应用程序在正常情况下的功能,并从中获得灵感。。。