Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: vux от Март 16, 2012, 11:16



Название: запретить закрывать виджет
Отправлено: vux от Март 16, 2012, 11:16
Можно ли заблокировать возможность закрыть виджет у которого нет родителя.


Название: Re: запретить закрывать виджет
Отправлено: V1KT0P от Март 16, 2012, 11:30
Можно ли заблокировать возможность закрыть виджет у которого нет родителя.
Да.


Название: Re: запретить закрывать виджет
Отправлено: vux от Март 16, 2012, 11:46
как?


Название: Re: запретить закрывать виджет
Отправлено: V1KT0P от Март 16, 2012, 11:50
как?
Код
C++ (Qt)
void QWidget::closeEvent(QCloseEvent *event)
{
   if (this->parent())
       event->accept();
   else
       event->ignore();
}
 


Название: Re: запретить закрывать виджет
Отправлено: vux от Март 16, 2012, 11:57
У меня evenFilter назначен на этот виджет, посему проверять имеет ли он родителя мне не нужно.
но при:
(Python)

Код
Python
if event.type() == QtCore.QEvent.Close:
   event.ignore()

виджет всеравно закрываеться


Название: Re: запретить закрывать виджет
Отправлено: V1KT0P от Март 16, 2012, 12:13
У меня evenFilter назначен на этот виджет, посему проверять имеет ли он родителя мне не нужно.
но при:
(Python)

Код
Python
if event.type() == QtCore.QEvent.Close:
   event.ignore()

виджет всеравно закрываеться
На С++ вот такое работает:
Код
C++ (Qt)
bool Widget::eventFilter(QObject *obj, QEvent *e)
{
   if (e->type() == QEvent::Close)
       e->ignore();
   return true;
}


Название: Re: запретить закрывать виджет
Отправлено: kambala от Март 16, 2012, 12:14
в фильтре надо ещё тру вернуть

альтернативный вариант - убрать кнопку закрытия виджета


Название: Re: запретить закрывать виджет
Отправлено: vux от Март 16, 2012, 12:20
спасибо - работает