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 ...
随机推荐
- cmd命令和快捷键
命令 含义 盘名: 从C盘到其他盘时输入 dir 查看当前文件夹下的内容 cd 目录名称 选择目录 cd.. 退回当前目录的上一级目录 cd\ 回到根目录 md 目录名称 创建目录 rd 目录名称 删 ...
- Makefile文件(DE1-soc软件实验”hello_word")
DE1-soc软件实验”hello_word"中,hello_word此程序很好理解,那Makefile文件又如何理解呢? 所要完成的Makefile 文件描述了整个工程的编译.连接等规则. ...
- Flink架构(四)- 状态管理
状态管理 之前我们提到过大多数流应用是有状态的.很多operators会不断的访问并更新某中状态,例如一个window中收集了多少条记录,输入源中当前读到的位置,亦或是用户定义的特定operators ...
- Django_模板
1. 模板变量 小插曲 2. 模板点语法和标签 2.1 获取属性 2.2 调用方法 2.3 获取索引 2.4 获取字典中的值 3. 模板中的标签 3.1 if 3.2 for 3.3 注释 乘除 整除 ...
- 【正确使用vim编辑器的姿势】
"vi:可视化接口(Visual Interface) vim:是vi的增强版(vi iMprove) vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中 ...
- apache+SSL 搭建https
简单介绍 一般情况下,我们打开网站默认的是使用明文传输方式,但在日常生活中,当我们在登录或者支付交易时,网站就会自动跳转至SSL(Secure Sockets Layes)加密传输模式,SSL的功能就 ...
- eclipse 添加主題
在使用Eclipse过程中可能想更换下界面主题,此处介绍的是一款主题插件 Eclipse Color Theme 打开Eclipse,Help --> Eclipse Marketplace 在 ...
- IntelliJ IDEA 2017.3尚硅谷-----修改当前主题字体、字体大小、行间距、控制台、注释
- 整体单改,单局部改,整体局部改,ListSerializer类
复习 """ 1.ModelSerializer序列化类 models.py class BaseModel(models.Model): is_delete = mod ...
- Euler Sums系列(六)
\[\Large\displaystyle \sum_{n=1}^{\infty}\frac{H_{2n}}{n(6n+1)}\] \(\Large\mathbf{Solution:}\) Let \ ...