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 的初始大小的主要内容,如果未能解决你的问题,请参考以下文章