首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

QLayout: Attempting to add QLayout XXX to XXX, which already has a layout

QLayout是Qt应用开发中一个非常重要的组件,然而平时使用的时候不小心经常会发现控制台有类似如下的警告: QLayout: Attempting to add QLayout "" to studio...但是实际上,如果不注意的话,任意的QWidget上使用QLayout都会出现这个警告。其实原因一般有两个: (1)已经显式设置了QLayout后,再次给QWidget设置QLayout。...这种情况下就是两次调用了QWidget的setLayout方法。解决办法是优化代码或者删掉其中一个QLayout。 (2)隐式的设置了QLayout后,再次给QWidget设置QLayout。...); } 其中,1和2两处代码通过this指针设置了QLayout的所属组件,也就是隐式的设置了这个QWidget的布局。...不管是什么类型的QWidget,都要注意这一点。

2.2K30
您找到你想要的搜索结果了吗?
是的
没有找到

一篇文章让你读懂PyQt5布局管理,绝对干货

addLayout(QLayout, row, column, rowSpan, columnSpan, Qt.Alignment) 在栅格布局中新的布局,从行(row)、列(column)开始,占据..., QWidget) addRow(QWidget, QLayout) addRow(str, QWidget) addRow(str, QLayout) 以上在表单布局最后添加一行数据,设置表单的标签和控件...addRow(QWidget) addRow(QLayout) QWidgetQLayout添加在最后一行,并占据两列宽度 insertRow(row, QWidget, QWidget) insertRow...(row, QWidget, QLayout) insertRow(row, str, QWidget) insertRow(row, str, QLayout) 在指定行添加标签和控件 insertRow...(row, QWidget) insertRow(row, QLayout) 在指定行添加控件,并占据两列宽度 布局对齐方式: 参数 描述 QtCore.Qt.AlignLeft 水平方向居左对齐 QtCore.Qt.AlignRight

18.6K21

Effective Qt

(注:这里会有一些代码设计的思路,不存在绝对的正误,只是一种习惯) 避免在子控件中使用 parentWidget() 方法获取 QWidget 指针强制转换为父控件指针,调用父对象方法。...还需要配合每一个控件本身的 sizePolicy() 以及布局的 sizeConstraint() 方可显示出Qt动态布局的威力 updateGeometry() 并不是每次调用都一定会生效,有时候你需要 QLayout...这个时候你可以选择拿到控件的 QLayout 然后循环对每个布局调用 QLayout::invalidate() ;在比较特殊的情况下你可以选择用 setFixedSize(sizeHint()) 这种奇怪的调用代替循环...尽量使用 QLayout 来控制控件的位置,而不是套用一个又一个的 QWidget ,因为永远不能预料到产品会把一个页面上的哪两个控件联系在一起,如果这些控件相隔了几个 QWidget ,拿到它们的指针将是一件非常蛋疼的事

70950

11.QT-布局管理器(Box,Grid,Form,Stacked)

布局管理器可以自定义,从而达到更加个性化界面布局的效果 布局管理器可以相互嵌套,完成所有常用的界面布局 QLayout是Qt中布局管理器的抽象基类,如下图所示: ?...stretch ); //设置部件拉伸系数,如果存在*widget这个组件,则设置成功,返回true bool QBoxLayout::setStretchFactor ( QLayout...QFormLayout表单布局 以表单的方式管理界面组件,专为标签和字段(组件)的形式创建的 表单布局也支持嵌套,可以管理子布局 常用函数: addRow ( QWidget * label, QWidget...* field ); addRow ( QWidget * label, QLayout * field ); addRow ( const QString & labelText, QWidget...* field ); addRow ( const QString & labelText, QLayout * field ); void setLabelAlignment ( Qt::Alignment

1.4K30

6.Layout Management(布局管理)

import sys from PyQt4 import QtGui def window(): app = QtGui.QApplication(sys.argv) w = QtGui.QWidget..., int r, int c) 在指定的行列增加widget addWidget(QWidget, int r, int c, int rowspan, int columnspan) 在指定的行列增加...widget并设定大小 addLayout(QLayout, int r, int c) 使用addLayout可以将其他layout插入到指定行列 应用举例 import sys from PyQt4...2.3 QFormLayout 该布局可以让我们很方便的创建一个表单布局 即只有两列的网格布局 第一列为label 第二列为输入框 它有如下3个方法 addRow(QLabel, QWidget) 增加包含...label和input的一行 addRow(QLabel, QLayout) 在第二列增加一个Layout addRow(QWidget) 增加一个widget,该widget扩展在两列 应用举例 代码很简单

68120

Qt 常用类 (9)—— QWidget

http://blog.csdn.net/hmsiwtv/article/details/7562015        QWidget 类代表一般的窗口,其他窗口类都是从 QWidget 类继承出来的...构造        QWidget 类的构造函数如下: [plain] view plaincopy QWidget(QWidget *parent = 0, Qt::WindowFlags ...值得一的是 editFocus 属性,这是一个专门用于嵌入式系统的属性。因为嵌入式系统通常键盘较小,没有专门用于切换焦点的 Tab 键,所以上下方向键被用来切换焦点。...布局         属性 layout 代表窗口的顶级布局,相关的成员函数如下: [plain] view plaincopy QLayout *layout() const;                   ...// 获得顶级布局   void setLayout(QLayout *layout);        // 设置顶级布局           字体         font 属性表示所用的字体,

3.4K10
领券