• 5451阅读
  • 4回复

改变容器里的部件(已解决,谢谢版主~) [复制链接]

上一主题 下一主题
离线yunyun0220
 
只看楼主 倒序阅读 楼主  发表于: 2008-05-25
— 本帖被 XChinux 执行加亮操作(2008-05-25) —
如何将原来容器里的部件删除掉,添加新的部件进去。。。

由于不知道容器里的部件到底是什么,所以用了takeAt()函数,代码如下:
   
QLayoutItem *child;
    while((child=w_Layout_main->takeAt(0))!=0)  //w_Layout_main为某个容器
                                                            delete child;

           
但是好像不对,它还是会显示原来的部件。请教下,做完移除后直接加部件进去不对吗???好像移除成功了啊。因为我查看了一下当前容器里的部件个数,确实是改变了。

谢谢大家~~~
[ 此贴被yunyun0220在2008-05-26 22:38重新编辑 ]
离线yunyun0220
只看该作者 1楼 发表于: 2008-05-25
原来这样只是将部件从容器里移除而已。还是会显示。但是如果将原来的部件删除了会不会影响到程序,还有应该怎样删除啊。。。
离线XChinux

只看该作者 2楼 发表于: 2008-05-25
takeAt()一般来说只是从父部件中把它去除,但这个部件本身并不会被删除以及销毁。要想销毁得自己销毁(delete)
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yunyun0220
只看该作者 3楼 发表于: 2008-05-26
上面的代码里不是有个delete child了吗?为什么还是不对呢~~~
离线yunyun0220
只看该作者 4楼 发表于: 2008-05-26
运用QLayoutItem的某个函数可以实现
                              QLayoutItem *child;
        while((child=w_Layout_main->takeAt(0))!=0)
                                        {
                                 QWidget *widget=child->widget();//返回Item对应的widget,如果不是,则返回0
               delete child;
               delete widget;
        }


谢谢XChinux~~
快速回复
限100 字节
 
上一个 下一个