QWidget::setLayout: Attempting to set QLayout "" on xxx "", which already has a layout
QLayout是Qt应用开发中一个非常重要的组件,然而平时使用的时候不小心经常会发现控制台有类似如下的警告:
QWidget::setLayout: Attempting to set QLayout "" on xxx "", which already has a layout
网上关于这方面的解释一直比较混乱,而且是抄来抄去的,主要是集中在QMainWindow的问题。但是实际上,如果不注意的话,任意的QWidget上使用QLayout都会出现这个警告。其实原因一般有两个:
(1)已经显式设置了QLayout后,再次给QWidget设置QLayout。这种情况下就是两次调用了QWidget的setLayout方法。解决办法是优化代码或者删掉其中一个QLayout。
(2)隐式的设置了QLayout后,再次给QWidget设置QLayout。这种情况是怎么产生的呢?看下面代码:
FootageListDock::FootageListDock(QWidget* parent)
: QDockWidget(parent) {
setObjectName("footagelistDock");
setWindowTitle(tr("Footage List"));
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); QHBoxLayout* mainLayout = new QHBoxLayout(this); //
mFootageList = new FootageListWidget(this); // 2
mFootageList->setRowCount(3);
mFootageList->setColumnCount();
mFootageList->setItem(,,new QTableWidgetItem("Jan"));
mFootageList->setItem(,,new QTableWidgetItem("Feb"));
mFootageList->setItem(,,new QTableWidgetItem("Mar"));
mFootageList->setRowCount(mFootageList->rowCount() + );
mFootageList->setItem(,, new QTableWidgetItem("April")); mainLayout->addWidget(mFootageList);
QWidget* centralWidget = new QWidget(this);
centralWidget->setLayout(mainLayout); //
setWidget(centralWidget);
}
其中,1和2两处代码通过this指针设置了QLayout的所属组件,也就是隐式的设置了这个QWidget的布局。而后面3处代码又再次显式调用了setLayout()方法,相当于重复设置了。于是出现了上面的警告。解决办法是,删掉1/2处的this指针或者setLayout调用即可。不管是什么类型的QWidget,都要注意这一点。
转自:
https://www.cnblogs.com/csuftzzk/p/qlayout_warnings.html
QWidget::setLayout: Attempting to set QLayout "" on xxx "", which already has a layout的更多相关文章
- QWidget::setLayout: Attempting to set QLayout "" on MainWindow "", which already has a layout
http://blog.csdn.net/zhuyingqingfen/article/details/6562246 如题,出现这个的原因是,如果你的窗口继承的是QMainwindow,需要设置 s ...
- (转载)Attempting to add QLayout "" to MainWindow "", which already has a layout
给QWidget或者QDialog设置布局的时候方式很简单.创建好一个布局:mainLayout,然后不停地把各个控件往mainLayout里面放,最后调用setLayout(mainLayout)就 ...
- Qt提示:setLayout: Attempting to set QLayout "" on MainWindow "MainWindow", which already has a layout
如题,出现这个的原因是,如果你的窗口继承的是QMainwindow,需要设置setCentralWidget(); 如下: QWidget * widget = new QWidget ( mainW ...
- QLayout: Attempting to add QLayout XXX to XXX, which already has a layout
QLayout是Qt应用开发中一个非常重要的组件,然而平时使用的时候不小心经常会发现控制台有类似如下的警告: QLayout: Attempting to add QLayout "&quo ...
- [Qt初级] 解决 中QMainWindow和QDockWidget添加布局失败问题
初接触Qt,使用的教程是陆文周编写的<Qt5开发及实例>一书. 其中有关于QDockWidget.QStackedWidget这些类的介绍和使用实例. 要首先说明的是书上讲的非常的清楚,代 ...
- pyqt布局管理器
有时候,碰到错误: QWidget::setLayout: Attempting to set QLayout “” on MainWindow “”, which already has a lay ...
- Qt QScrollArea and layout in code
Qt QScrollArea and layout in code 一.参考文档: . Qt 第六章 QScrollArea类给QWidget添加滚动条 http://blog.csdn.net/co ...
- lr使用linux Generator测试https莫名报 SSL protocol error when attempting to connect with host
接收一个性能测试任务,各种原因需要使用linux agent产生压力.诡异的事发生了,同样脚本windows回放成功,使用linux agent报如下错误,脚本回放失败. Action.c(33): ...
- PyQt5在QWidget窗体中显示Qwidget的自定义类(补:完美解决)
[概览] 1.显示原生Qwidget 1)不使用布局(绝对定位) 2)使用布局 2.显示Qwidget的自定义类 1)不使用布局(绝对定位) 2)使用布局 [知识点] 1.显示原生Qwid ...
随机推荐
- SSH多表操作入门
这个系统写到这里,所涉及到的都是单表的操作,增删改查,现在功能需要完善,涉及到多表操作,开始是毫无头绪,书上的代码也没有现成的可以借鉴,想来就从最简单的开始.问题出现了很多,不过最后在龙哥的提示下还是 ...
- 操作系統3-內存管理(Linux內存管理)
操作系統3-內存管理(Linux系統的內存管理方法) 9.Linux系統的內存管理方法 Linux採用"按需調頁"算法,支持三層管理策略.由於Intel CPU在硬件級提供了段式存 ...
- vue项目单页
<template> <div> <div v-if="type === 'A'">A</div> <div v-else-i ...
- c# DPI SCale
public class Screen { /// Primary Screen #region Win32 API [DllImport("user32.dll")] stati ...
- [RedHat]“is not in the sudoers file”解决方法
当在终端执行sudo命令时,系统提示“luckchengis not in the sudoers file”: $ sudo ls Password: luckcheng is not in the ...
- 按需引入element-ui时修改.babelrc报错
刚开始学习element-ui时用的都是完整引入,图省事,这次准备按需引入,以减小项目体积, 乙烯类npm 之后,到了修改 .babelrc 文件这一步(PS:vue-cli 2.0版本会有这个文件, ...
- form:select的内容
https://blog.csdn.net/ccclych1/article/details/88395650
- spring注解注入:<context:component-scan>以及其中的context:include-filter>和 <context:exclude-filter>的是干什么的?
转自:https://www.cnblogs.com/vanl/p/5733655.html spring注解注入:<context:component-scan>使用说明 sprin ...
- python学习之 logging包
1,logging包 python的一个包,专门用来写日志的. 官方一共划分了6个等级的log类型,分别对应重要性等级50,40,30,20,10,0: 级别排序:CRITICAL > ERRO ...
- Nginx的相关介绍
前言 说到服务器,一定会想到apache的httpd和Nginx Apache的发展时期很长,而且是毫无争议的世界第一大服务器.它有着很多优点:稳定.开源.跨平台等等.它出现的时间太长了,它兴起的年代 ...