QLayout 动态布局(如何清空布局)
来源:互联网 发布:抠图软件 for mac 编辑:程序博客网 时间:2024/06/10 08:35
例子就是qtdemo里面的动态布局的例子,详细代码就不具体列出了,这里主要讲下如何清空布局,以及遇到的问题及其解决办法。
核心代码:
void Dialog::rotateWidgets()
{
Q_ASSERT(rotableWidgets.count() % 2 == 0);
foreach (QWidget *widget, rotableWidgets)
rotableLayout->removeWidget(widget);
rotableWidgets.enqueue(rotableWidgets.dequeue());
const int n = rotableWidgets.count();
for (int i = 0; i < n / 2; ++i) {
rotableLayout->addWidget(rotableWidgets[n - i - 1], 0, i);
rotableLayout->addWidget(rotableWidgets[i], 1, i);
}
}
通过队列来保存widget的列表,从而删除、添加到layout,原理很简单,但是很多人会遇到这样的问题,布局内的widget删除后并没有消失,这是怎么回事呢?
API文档里提供了一种安全的删除layout中控件的方法:
QLayoutItem *child;
while ((child = layout->takeAt(0)) != 0) {
...
delete child;
}
删除是执行了,但是widget仍然没有消失。。。
最后还是找到办法了,http://www.qtcn.org/bbs/simple/?t15751.html
xtowx2009-02-24 13:43我用delete后,程序老是报错,后来我在网上查到用Widget.setParent(None),然后再layout.removeWidget(Widget),就可以了。呵呵 原文作者可能是疏忽,None应该是NULL,即widget->setParent(NULL);编译运行,OK!非常高兴!- QLayout 动态布局(如何清空布局)
- QLayout删除控件后重新布局问题
- QT实现竖直方向的窗口布局(使用QLayout类)
- 布局管理(分割窗口QSplitter类、停靠窗口QDockWidget类、堆栈窗体QStackedWidget类、基本布局(QLayout))
- Qt学习——布局管理器QLayout类
- Qt学习——布局管理器QLayout类 .
- QtCreator 布局管理(QLayout,QBoxLayout,QGridLayout,QFormLayout,QStackedLayout)
- Qt学习——布局管理器QLayout类
- 动态布局
- 动态布局
- 动态布局
- 动态布局
- 如何清空RECYCLEBIN
- 如何清空StringBuilder
- 如何清空flexigrid
- 如何清空RECYCLEBIN
- 动态生成的内容,如何控制布局
- border布局如何动态替换其中一块
- Android的AlertDialog详解
- java_command
- Hive BI analytics: Visual Reporting
- Android中一直走马灯效果的TextView
- 4断点和单步执行
- QLayout 动态布局(如何清空布局)
- Hive + Intellicus
- HAProxy负载均衡器的配置与算法
- Hadoop Ecosystem World-Map
- hdu 1085 Holding Bin-Laden Captive!
- Fedora 18 修改主文件夹目录名为英文
- shell 日期
- hdu 1877 又一版 A+B
- 分享8年开发经验,浅谈个人发展经历,明确自己发展方向