Вам уже ответили - скорее всего потому, что вы вызывали close не у окна, а у самой кнопки. При этом она собственно и исчезала.
Ну это в рамках телепатии и прорицания. Точнее только если вы выложите тот глючащий код.

я же уже писал что если не добавлять форму в QMdiArea что все корректно отрабатывает. откуда уже можно сделать вывод
что сигналы настроены верно. если бы сигнал был не верный. то он бы и в этом случае тоже сработал бы так же.
а во вторых если на форму накидать еще всяких кнопок виджетов и т.д. то они пропадают так же как пропадает нажимаемая кнопка.
вот код самой формы
CRm::CRm(QWidget *parent) :
QWidget(parent)
{
setupUi(this);
//connect(this->pushButton,SIGNAL(clicked()),this,SLOT(_close()));
connect(this->pushButton,SIGNAL(clicked()),this,SLOT(close()));
}
void CRm::_close()
{
//QCloseEvent *i = new QCloseEvent();
//QWidget::closeEvent(i);
//this->close();
}
а так я создаю:
CRm * Spr = new CRm(this);
Spr->setObjectName(sender()->objectName());
Spr->setAttribute(Qt::WA_DeleteOnClose);
Spr->setWindowTitle(QObject::tr("Справочник: ""Рабочие места"""));
QMdiSubWindow *sw = new QMdiSubWindow();
sw->setAttribute(Qt::WA_DeleteOnClose);
sw->setWidget(Spr);
m_pws->addSubWindow(sw);
//connect(Spr->pushButton,SIGNAL(clicked()),sw,SLOT(close()));
Spr->show();