Qt:窗口调整大小的正方形约束

5

我有一个QDockWidget,里面只有一个正方形的小部件。我希望这个“QDockWidget”可以调整大小,但始终保持正方形的形状,而默认情况下它可以被不成比例地拉伸。

我需要设置什么样的大小策略、大小提示等组合来实现这一点呢?

2个回答

2
当调用resizeEvent()时,窗口小部件的新大小已经确定。因此,从中调用resize()可能会导致闪烁。
您可以尝试重新实现QWidget::heightForWidth(int);只要QDockWindow被停靠,并且Qt的布局管理器控制它,这可能有效。但是我IRC上了解到,在X11上,heightForWidth()在顶层窗口小部件(窗口)上不起作用。

1

你需要重写resizeEvent方法。

在这个方法中,你需要比较宽度和高度,

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


1
我本来希望有比这更简单的方法。如果我这样做,我必须弄清用户的意图(用户是想增加还是减小宽度或高度或两者都要?),否则我会覆盖用户的操作...无论如何,还是谢谢。 - erjiang
也许你可以在调整大小时选择更大的那个,但这可能会在缩小时出问题(反之亦然,在增长时选择较小的值)。因此,你应该想办法实现一种机制。当用鼠标进行拉伸时,它将成为小部件到另一个角落的距离。你应该看看应用程序通常做什么,并从中获得启发... - ufukgun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接