QMdiSubWindow 的初始大小

Posted

技术标签:

【中文标题】QMdiSubWindow 的初始大小【英文标题】:Initial size for QMdiSubWindow 【发布时间】:2013-10-25 13:48:10 【问题描述】:

有没有办法为子窗口小部件(继承自 QMdiSubWindow)定义初始大小?我不想限制最小尺寸或阻止它被调整大小,而只是在第一次显示给定尺寸的窗口。

我尝试重新实现 sizeHint 并定义不同的大小策略,但即使进行了这些更改,autoAjust 调用似乎也会使窗口在首次显示时变得非常小(大小为 200 x 200)。该窗口包含具有此层次结构的小部件:QVBoxLayout -> QScrollArea -> QLabel。 QLabel 用于显示尺寸为 512 x 512 的图像。

编辑:将类更正为 QMdiSubWindow。

【问题讨论】:

【参考方案1】:

您可以使用 resize(int w, int h)。 它不会设置最大和最小尺寸。 它只会改变子窗口的初始大小。 实际上,它真正做的是:它改变了子窗口的“当前”大小。但是第一个当前大小是“初始”大小。所以基本上是一样的。

【讨论】:

这帮助我知道要尝试什么,但请查看我更完整的答案以了解实际对我有用的方法。【参考方案2】:

据我所知,Qt 中没有 QSubWindow 这样的东西。

但是,在 QWidget 上调用 setGeometry 将设置其大小。

【讨论】:

对不起,我的意思是 QMdiSubWindow。 :) 我也尝试设置几何,但 mdi 子不尊重给定的大小(仅位置)。 @LuizVieira,你能用鼠标调整同一个 Mdi 窗口的大小吗? 是的,窗口可以用鼠标调整大小,最大化,最小化和恢复。 如果您将FixedSize 设置为您想要的大小,它是否按预期显示?如果是这样,您可以调用 setFixedSize,显示窗口,然后设置最大尺寸以允许调整窗口大小。 嗯,这样效果更好,tks!但是现在它将大小限制为 setFixedSize 调用中使用的大小(这个想法不是在任何意义上限制调整大小,增长或缩小,只是为了提供初始建议大小)。我也使用 setMinimumSize 测试了您的想法,但它不再起作用(即显示的尺寸与 setFixedSize 中使用的尺寸不同)。【参考方案3】:

经过大量寻找答案和试验,我发现这对我有用。

child->parentWidget()->resize(900, 700);
child->parentWidget()->updateGeometry();
child->show();
// child->showMaximized();

您可以使用showMaximized() 代替show(),如果以后将窗口更改为normal,仍将使用(900, 700)

【讨论】:

以上是关于QMdiSubWindow 的初始大小的主要内容,如果未能解决你的问题,请参考以下文章

-Xms:初始堆大小或最小堆大小?

在初始化列表中初始化一个常量大小的数组

集合初始化时,指定集合初始值大小。

c#中未初始化的struct与未初始化的类的大小是多少?

可变数组怎么初始化(可变大小的对象不能被初始化)?

Qt--QMdiArea和QMdiSubWindow的基本用法