gpt4 book ai didi

qt - 如何在返回之前更新 QLayout 并获取新尺寸?

转载 作者:行者123 更新时间:2023-12-03 18:27:04 25 4
gpt4 key购买 nike

这让我发疯。我有一个自定义菜单类,当设置为可见时,它会显示位于特定文件夹中的项目列表。当按下硬件按钮时,我的应用程序获取最新的项目列表,用它们填充菜单,然后返回。

显示这些项目的菜单使用填充了自定义小部件的 QListWidget。每个小部件都包含一个或多个水平布局的 QLabel,并在显示菜单时创建。为了根据可用的菜单宽度调整显示的文本,我需要在根据布局调整大小之后,但在菜单对用户可见之前获取 QLabel 的大小。问题是,在构建我的列表的所有函数返回之前,我的布局不会更新。

我已经尝试过 QApplication::ProcessEvents() 和布局更新函数,但在返回之前它们都没有更新我的 QLabels 的值。我可以在最初按下按钮时设置一个 QTimer,让它显示菜单、更新项目并自行停止,但这似乎是一个糟糕的解决方案。

任何帮助将不胜感激!我花了一天的大部分时间在这上面。

马龙

最佳答案

我遇到了这个确切的问题,无法在 Internet 上的任何地方找到答案。调用 Layout.update() , Layout.activate() , 或 widget.adjustSize() (在各个地方都建议)都不起作用。

我有一个垂直布局的小部件,我想向其中添加 QLabel,然后立即使用 QLabel 的大小。

唯一可靠工作的是

layout->addWidget(myLabel);
myLabel->show();
size = myLabel->size();

在您从函数返回并允许 Qt 事件循环进行或手动调用 show() 之前,布局似乎不会重新计算。你自己。

关于qt - 如何在返回之前更新 QLayout 并获取新尺寸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7882749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com