qt界面和图片疯狂变大的bug问题

今天遇到一个图片疯狂变大的bug,起因是需要图片根据qlabel的大小变化而变化,而qlablel的大小要跟随主界面的大小变化,布局中有两个并列的qlabel去装载图片,在resizeEvent中修改了图片的大小。

最终原因是:

1.布局循环反馈链:

cpp 复制代码
text
resizeEvent触发 → 图片缩放 → QLabel的sizeHint变化 → 布局重新计算 → 
父组件大小变化 → 触发新的resizeEvent → 循环继续

2.QTabWidget的特殊性(因为其中一张图片是在QTabWidget上):

  • QTabWidget内部的布局机制更复杂;
  • Tab页面切换、大小计算有延迟;
  • 多个布局管理器嵌套导致尺寸传递不稳定。

解决方案:QLabel和图片随窗口按比例变化,同时避免布局循环,ai提供了很多的解决方案,我觉得最简单的方法是不让qlabel根据其中内容变化尺寸,强制QLabel忽略图片大小,始终使用布局分配的空间。

设置QLabel忽略内容尺寸:将其尺寸策略设置为Ignored,默认的是Expanding,可以在UI设计工具中修改,也可以通过代码修改。

cpp 复制代码
qLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);

下面连接是一个简单的图片随界面变化而缩放的工程示例(没有vip可以私信我,不一定及时看得到哈):https://download.csdn.net/download/tjm1017/92542675

相关推荐
多弗朗皮卡丘9 小时前
C++ 红黑树
开发语言·c++·红黑树
ZoeLandia9 小时前
TypeScript 04:类型断言与类型守卫
开发语言·前端·typescript
geovindu9 小时前
rust: pool Pattern
开发语言·后端·设计模式·rust·对象池简写模式
jimy19 小时前
标准的动态类型定义与“多态”无关,非多态对象同样会出现动态类型不同于静态类型的情形
开发语言·c++
冬、不眠的夜9 小时前
Nuitka 将 python 程序编译成 exe 指南
开发语言·python
CVer儿9 小时前
起源1引擎相关知识点2--World Brush+func_detail
开发语言
尘中远9 小时前
QWT7 的科学 Colormap 色彩评估:QwtColorMapPreset 22 种预设的感知均匀性与场景化选
qt·qwt·科学绘图·科学配色
薛之谦_10 小时前
JAVA 多线程编程:从基础原理到实战应用
java·开发语言
LMT_Lanmantech10 小时前
Creo许可降本增效:不增购,也能让现有许可发挥更大价值
java·大数据·开发语言
蜗牛互联网10 小时前
Python Agent 工具调用:审批令牌、参数白名单和累计预算
java·开发语言·人工智能·windows·后端·python