在QWidget界面中,不管是否采用了布局,只要是QWidget的子类,则可以用findchild()函数查找所有子类,然后通过指定函数进行删除。下面是博主总结的两种动态删除dget内控件的方法。
一、通过函数qDeleteAll()删除
其中,该函数原型有两个,分别如下:
//第一个原型
template <typename ForwardIterator>
Q_OUTOFLINE_TEMPLATE void qDeleteAll(ForwardIterator begin, ForwardIterator end)
{
while (begin != end) {
delete *begin;
++begin;
}
}
//第二个原型
template <typename Container>
inline void qDeleteAll(const Container &c)
{
qDeleteAll(c.begin(), c.end());
}
由上可知,第二个原型是调用第一个原型,其中第一个原型是通过迭代器,用delete来删除指定的控件类。
1.2用法如下
博主要删除指定QWidget界面内所有的QLabel子类,步骤如下
1.2.1新建一个QWidget工程,勾选UI界面,然后在UI界面内随意拖进几个QLabel,如下图所示