【发布时间】:2018-02-16 17:21:41
【问题描述】:
我正在创建一个屏幕,用户可以在其中添加某些图块以在编辑器中使用,但添加图块时,窗口无法正确调整大小以适应内容。除了当我拖动窗口或稍微调整它的大小时,它会立即捕捉到正确的大小。
我尝试使用 resize(sizeHint());这给了我一个不正确的大小和以下错误,但是在调整大小/拖动时仍然会发生捕捉到正确大小的情况。
QWindowsWindow::setGeometry: Unable to set geometry 299x329+991+536 on QWidgetWindow/'TileSetterWindow'. Resulting geometry: 299x399+991+536 (frame: 8, 31, 8, 8, custom margin: 0, 0, 0, 0, minimum size: 259x329, maximum size: 16777215x16777215).
我也尝试过使用 updateGeometry() 和 update(),但它似乎并没有起到什么作用。
当将窗口设置为 fixedSize 时,它会立即调整大小,但随后用户无法再调整窗口大小。我在这里做错了什么,我从哪里开始解决它?
编辑 Minimal verifiable example 和 .ui file。 selected_layout 的类型为Flowlayout flowlayout_placeholder_1 之所以存在,是因为我无法将 flowlayout 直接放置到设计器中。
编辑2 这是minimal Visual Studio example。我使用 Visual Studio 进行 Qt 开发。我尝试在 Qt Creator 中创建一个项目,但没有成功。
编辑3 添加了little video (80 KB)。
编辑4 这是updated Visual Studio example。它有 jpo38 提出的新变化。它解决了错误调整大小的问题。虽然现在试图缩小窗户会导致问题。如果您尝试减少水平空间,即使有更多行的空间,它们也不会正确填充垂直空间。
【问题讨论】:
-
分享.ui文件,不分享.ui生成的.h文件,方便管理。
-
您是否尝试使用
adjustSize()? -
@Evgeny 我做了,我得到“QWindowsWindow::setGeometry: Unable to set geometry 299x329+671+417 on QWidgetWindow/'TileSetterWindow'. 生成的几何:299x399+671+417(帧:8, 31、8、8,自定义边距:0、0、0、0,最小尺寸:259x329,最大尺寸:16777215x16777215)。除了使初始窗口大小小于设计器中设置的宽度之外,它似乎并没有多大作用。
-
请同时提供 .pro 文件,这样示例就完成了。
标签: c++ qt qt-designer