//当标签关闭,就删除 void MainWindow::on_tabWidget_tabCloseRequested(int index) { /*delete widget if the tab is closed*/ QWidget *toRm = ui->tabWidget->widget (index); ui->tabWidget->removeTab (index); toRm->disconnect (); delete toRm; toRm = NULL; // 删除对象后告诉外部删除临时对象 emit actionFinish (); }
void MTContactDetails::on_btnAddressDelete_clicked() { QObject * pqobjSender = QObject::sender(); if (NULL != pqobjSender) { QPushButton * pBtnDelete = dynamic_cast<QPushButton *>(pqobjSender); if (m_pAddresses && (NULL != pBtnDelete)) { QVariant varContactID = pBtnDelete->property("contactid"); QVariant varMethodType = pBtnDelete->property("methodtype"); QVariant varMethodAddr = pBtnDelete->property("methodaddr"); int nContactID = varContactID .toInt(); QString qstrMethodType = varMethodType.toString(); QString qstrAddress = varMethodAddr.toString(); QWidget * pWidget = VPtr<QWidget>::asPtr(pBtnDelete->property("methodwidget")); if (NULL != pWidget) { bool bRemoved = MTContactHandler::getInstance()->RemoveMsgAddressFromContact(nContactID, qstrMethodType, qstrAddress); if (bRemoved) // Let's remove it from the GUI, too, then. { QLayout * pLayout = m_pAddresses->layout(); if (NULL != pLayout) { pLayout->removeWidget(pWidget); pWidget->setParent(NULL); pWidget->disconnect(); pWidget->deleteLater(); pWidget = NULL; } } } } } }