当前位置:网站首页>【QT】QLayout: Attempting to add QLayout “to ***“, which already has a layout的终极解决方法
【QT】QLayout: Attempting to add QLayout “to ***“, which already has a layout的终极解决方法
2022-08-09 14:59:00 【Small-K】
问题
最近在捣鼓QT的时候,经常遇到Qlayout布局不成功的问题,提示是要设置的部件已经有布局了。
如字面意思,这种情况就是多次设置布局引起的,那么如何解决呢?
原因以及解决方法
代码性重复设置
第一种可能就是你自己在写代码的时候重复设置了layout,有以下两种情况
1. 初始化时指定了父窗口,最后又显式调用setLayout函数
//首先创建布局的时候就指定了父窗口,那么你的部件在这里就被设置了一次布局
QVBoxLayout * lay = new QVBoxLayout(this);
/*----others-----*/
//布局设置完后,你又显式地调用部件地setLayout函数,这就重复了一次
setLayout(lay);
2. 重复调用setLayout函数
QVBoxLayout * lay = new QVBoxLayout;
lay->addWidget(ptn);
lay->addWidget(ui->pushButton);
//第一次调用
setLayout(lay);
QHBoxLayout * lay2 = new QHBoxLayout;
lay2->addWidget(ptn);
lay2->addWidget(ui->pushButton);
//第二次调用
setLayout(lay2);那么它会应用哪种布局形式呢,第一种吗?不,测试后发现它哪种都不用,使用了默认的designer里面的布局
与Designer里的布局重复
如果你并没有在代码里重复设置过layout, 但仍有可能出现重复设置的问题,这是因为你和Designer里的布局冲突了,将designer里的布局break掉就行了。这里又分两种情况
1. 你的基类是QMainWindow类
注意了,MainWindow类它自身是有一个布局的,而且这个布局你是break不了的,一般你要设置的样式都集中在主要区域(MainWinodw分菜单区,主要区域,tool区,dock区,status区等)里,MainWindow的主要区域可以通过 centralWidget() 来获取,这个时候就给主区域设置样式即可。
QVBoxLayout * lay = new QVBoxLayout;
lay->addWidget(ptn);
lay->addWidget(ui->pushButton);
this->centralWidget()->setLayout(lay);2. 你的基类不是QMainWinodw,也就是一个widget部件
这个时候肯定是你在designer里设置过一个布局,去designer里面break掉就行了

如图所示,打破布局的部件会像centrawidget前面的那个标志一样有个禁止的红色标志,像MainWindow自身的布局你是打破不了的。
边栏推荐
猜你喜欢
![[Paper reading] LIME: Low-light Image Enhancement via Illumination Map Estimation (the most complete notes)](/img/ca/6c8939fd752cc8928c2ffce0b090ed.png)
[Paper reading] LIME: Low-light Image Enhancement via Illumination Map Estimation (the most complete notes)

【工具使用】Modbus Poll软件使用详解

杭州富阳科目三新规3号线考试攻略

Time series analysis

flask局域网访问失败解决方法(使用pycharm运行代码的一定要看)

蓝桥杯嵌入式第十三届模拟题做题笔记

堆(heap)系列_0x03:堆块 + malloc/new底层 + LFH(WinDbg分析)

PatchEmbed代码讲解记录

将类指针强制转换为void*指针进行传参的使用方法

PE format series _0x05: output table and relocation table (.reloc)
随机推荐
Excel绘制统计图
交叉编译 CURL
Vim实用技巧_5.在文件间和文件内快速移动
Basic Concepts of Software Security
Stetman读paper小记:Backdoor Learning: A Survey(Yiming Li, Yong Jiang, Zhifeng Li, Shu-Tao Xia)
【Postgraduate Work Weekly】(Week 9)
【力扣】516. 最长回文子序列
堆(heap)系列_0x07:NT堆调试支持_滞后发现调试支持
如何不使用第三个变量来交换两个数的值
【力扣】1995. 统计特殊四元组
Basic Terms of Machine Learning
杭州富阳科目三考试
蓝桥杯嵌入式备赛
libev库解剖(1)
面试经历(华为,瑞晟,大华,海康,虹软,顺丰)
Stetman读peper小记:Defense-Resistant Backdoor Attacks Against DeepNeural Networks in Outsourced Cloud
hugging face tutorial-Chinese translation-pipeline-based reasoning
Heap series _0x03: heap block + malloc/new bottom layer + LFH (WinDbg analysis)
tensor转cv::Mat(即CHW转HWC)原理含C#代码实现
matlab讲解与使用【持续更新中ing】