我正在创建一个屏幕,用户可以在编辑器中添加特定的瓷砖,但是当添加瓷砖时,窗口没有正确地调整大小以适应内容。但是,当我拖动窗口或稍微调整大小时,它立即自动调整到正确的大小。
而且当我拖动窗口时,它也会自动调整到正确的大小。 我尝试使用resize(sizeHint()),但出现了错误和不正确的大小。当重新调整大小/拖动时,仍会自动调整到正确的大小。
我还尝试使用updateGeometry() 和 update(),但好像并没有什么作用。
当将窗口设置为fixedSize时,它会立即调整大小,但是用户无法再调整窗口大小了。我在这里做错了什么,从哪里开始解决呢?
编辑 最小可验证示例和.ui文件。 selected_layout的类型为Flowlayout flowlayout_placeholder_1只是因为我不能直接将flowlayout放入设计器中。
编辑2 这是一个最小Visual Studio示例。我在Qt开发中使用Visual Studio。我尝试在Qt Creator中创建项目,但没能成功。
而且当我拖动窗口时,它也会自动调整到正确的大小。 我尝试使用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时,它会立即调整大小,但是用户无法再调整窗口大小了。我在这里做错了什么,从哪里开始解决呢?
编辑 最小可验证示例和.ui文件。 selected_layout的类型为Flowlayout flowlayout_placeholder_1只是因为我不能直接将flowlayout放入设计器中。
编辑2 这是一个最小Visual Studio示例。我在Qt开发中使用Visual Studio。我尝试在Qt Creator中创建项目,但没能成功。
编辑3 添加了一个小视频(80 KB)。
编辑4 这里是更新的Visual Studio示例。它包含jpo38提出的新更改。它修复了不良调整大小的问题。尝试缩小窗口现在会导致问题。即使有更多行的空间,如果您尝试减少水平空间,它们也不再正确地填充垂直空间。
dialog->layout()->setSizeConstraint(QLayout::SetMinimumSize);
。默认的大小约束似乎有点奇怪,因为它不会更新对话框的 minimumSize(),除非是第一次。对于您的情况这将是无用的。 - Johannes Schaub - litb