QTabWidget 子选项卡关闭前(removeTab)不同类型的窗口子部件资源回收

在添加 QTabWidget 子标签时,往往会添加窗口子部件(QWidget*)

    //自定义搜索子部件类 1类型
    SearchKeywdWidget *searchWidget = new SearchKeywdWidget(NULL,keyWord);
    connect(searchWidget,SIGNAL(signal_clicked_title(QString ,QString )),this,SLOT(slot_clicked_title(QString ,QString )));
    searchWidget->searchKeyword(keyWord);
    int index = ui.tabWidget->addTab(searchWidget,keyWord);//添加子标签 类型SearchKeywdWidget 
    ui.tabWidget->setCurrentIndex(index);//激活新增的标签页

    //...

    //自定义搜索子部件类 2类型
    ArticleWidget *article = new ArticleWidget();
    article->setArticle(title,context);
    int index = ui.tabWidget->addTab(article,title);//添加子标签 类型article
    ui.tabWidget->setCurrentIndex(index);//激活新增的标签页

在响应标签的关闭按钮时,进行资源回收

//关闭标签页(包括搜索页和文章详情页)
void AsrDlg::slot_tab_close(int index)
{
    //SearchKeywdWidget* 和 ArticleWidget* 两种窗口部件,怎么区分?
    //不用区分,直接在各种的析构函数中资源回收即可
    QWidget *pItemWidget = ui.tabWidget->widget(index);
    if (0 != pItemWidget)
    {
        delete pItemWidget;
        pItemWidget = 0;
    }
    ui.tabWidget->removeTab(index); 
}

//析构函数进行资源回收
SearchKeywdWidget::~SearchKeywdWidget()
{
    ClearResultSearchWidget();
}

你可能感兴趣的:(QT,问题记录)