Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] closeEvent() Как отменить закрытие формы ? Как отменить закрытие формы ? 
:(
    Опции темы
andrew_121
Дата 24.3.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Перегрузил QDialog::closeEvent(), как отменить закрытие формы ?



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
JackYF
Дата 24.3.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 7
Всего: 162



Цитата(andrew_121 @  24.3.2008,  14:51 Найти цитируемый пост)
как отменить закрытие формы ?

Хм. Оставить процедуру пустой пробовал?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
andrew_121
Дата 24.3.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



JackYF, С этим разобрался.
Это виртуальный член, если не обработать или не отменить событие, то оно по предкам до QWidget дойдет, и хана......
Код

QDialog::closeEvent(QCloseEvent *evnt)
{
    if (!closeDialog)
        evnt->ignore(); // <<<<<<<<<<<< Вот ОНО !!!
    QDialog::closeEvent(evnt);
}



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
andrew_121
Дата 24.3.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



К стати, если сделать вот так:
Код

QDialog::closeEvent(QCloseEvent *evnt) {
   evnt->ignore();
}

То пропадает интерфейс, а прога остается себе работать, как приличный демон!
На заметку !


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
archimed7592
Дата 24.3.2008, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Цитата(andrew_121 @  24.3.2008,  17:00 Найти цитируемый пост)
На заметку ! 

На заметку: если хочешь, чтобы был нормальный behaviour - делай accept, если не делаешь ignore.
Код

QDialog::closeEvent(QCloseEvent *evnt) {
    if (!closeDialog)
        evnt->ignore();
    else
        evnt->accept();
}

Ну а так:

Цитата(andrew_121 @  24.3.2008,  17:00 Найти цитируемый пост)
QDialog::closeEvent(QCloseEvent *evnt) {
   evnt->ignore();
}

У тебя просто не будет закрываться окно, ибо безусловный ignore.

Что же касается
Код

QDialog::closeEvent(QCloseEvent *evnt) {
   evnt->ignore();
   QDialog::closeEvent(evnt);
}
Это всё равно, что написать
Код

QDialog::closeEvent(QCloseEvent *evnt) {
   evnt->ignore();
   evnt->accept();// QDialog::closeEvent(evnt);
}



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0811 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.