Qt是c++的应用程序开发框架,使用Qt能快捷地开发想要的程序。本文介绍Qt动态添加控件的方法,具体而言就是根据用户操作生成新的控件到界面,同时,相应的操作可以使得控件动态删除。
首先,我们使用Qtcreator创建一个gui工程,所有的设置使用默认即可。本例中使用的qt4.8.5进行开发。
然后,打开工程中的界面文件,在界面中添加两个按钮和一个布局,具体设置效果可以通过下面的图片看到。
然后,我们转到“新建”按钮的槽中,实现当鼠标点击新建按钮,自动创建一个label控件,并将之加入到下方的gridlayout中。
我们转到按钮单击的槽函数,添加label创建代码如下图所示。
运行程序,我们点击多次新建按钮,可以看到,在下方生成了多个label控件,当然也可以设置生成其他控件。
接下来,我们要对这些控件进行删除操作,这一步是关键,一般说来,我们由于我们是通过addWidget加入到布局中的,所以我们要先调用removeWidget将这些控件移除,然后再通过delete删除控件。所以可以看出控件的指针是操作的关键,之前我们没有保存控件指针,操作中如果使用链表等保存这些控件指针将带来操作的方便。
在下图中的操作中,我们先获取布局总item的数目,然后我们每次都获取一下最后一个控件的指针,之后,先异常控件,再释放控件资源。
程序运行可以看到删除效果,需要注意的是,调用remove函数并不释放控件资源,如下图,没有delete的话,控件还是存在的,只是不再布局罢了。