qt使用布局进行窗口切换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012020854/article/details/77648449
/** 清理一个QLayout中的所有QWidget并放入QList中
 * @brief PublicClass::clearLayout
 * @param layout
 * @param wList
 * @return
 */
bool PublicClass::clearLayout(QLayout *&layout,QList<QWidget*>&wList)
{
    QLayoutItem *item = NULL;
    if(!layout){
        setLastError("PublicClass::clearLayout:layout is NULL");
        return false;
    }
    while(NULL!=(item = layout->takeAt(0))){
        item->widget()->close();//关闭但不释放
        wList.append(item->widget());
        item = NULL;
    }
    return true;
}
/** 清理一个QLayout中的所有QWidget
 * @brief PublicClass::clearLayout
 * @param layout
 * @return
 */
bool PublicClass::clearLayout(QLayout *&layout)
{
    QLayoutItem *item = NULL;
    if(!layout){
        setLastError("PublicClass::clearLayout:layout is NULL");
        return false;
    }
    while(NULL!=(item = layout->takeAt(0))){
        item->widget()->close();//关闭但不释放
        item = NULL;
    }
    return true;
}
/** 把QList<QWidget*>放入QLayout中
 * @brief PublicClass::addLayoutByWidgetList
 * @param wList
 * @param layout
 */
void PublicClass::addLayoutByWidgetList(QList<QWidget*>wList, QLayout *layout)
{
    clearLayout(layout);
    for(int i=0;i<wList.size();++i) {
        auto var = wList.at(i);
        layout->addWidget(var);
    }
}
/** 把QWidget放入QLayout中
 * @brief PublicClass::addLayoutBy
 * @param w
 * @param layout
 */
void PublicClass::addLayoutBy(QWidget*&w, QLayout*&layout)
{
    clearLayout(layout);
    layout->addWidget(w);
}
/** 删除layout中的所有控件
 * @brief PublicClass::deleteLayoutItems
 * @param layout
 */
void PublicClass::deleteLayoutItems(QLayout*layout)
{
    QLayoutItem *item = NULL;
    while(NULL!=(item = layout->takeAt(0))){
        delete item->widget();//释放
        delete item;
        item = NULL;
    }
}

猜你喜欢

转载自blog.csdn.net/u012020854/article/details/77648449