Russian Qt Forum
Ноябрь 25, 2024, 11:39
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Закрыть диалог из init()
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Закрыть диалог из init() (Прочитано 6434 раз)
Vilgeforce
Гость
Закрыть диалог из init()
«
:
Сентябрь 13, 2006, 15:42 »
В init() диалога идет обращение к БД, дабы информацию из нее в QComboBox этого диалога добавить. Отлавливается ошибка выполнения запроса. При возникновении ошибки выдается QMessageBox, после чего диалог появляться не должен. Вот вопрос - как недопустить появления диалога из его собственного init()?
return, emit this->reject(), this->close() не помогают. delete this и this->close(true) выдают Segmentation fault.
Система Linux, Qt 3.1.x
Записан
DenKor
Гость
Закрыть диалог из init()
«
Ответ #1 :
Сентябрь 13, 2006, 19:12 »
Насколько я помню для этого в процедуре init надо вернуть false на выходе.
return false; // ошибка окрытия диалога
добавлено спустя 4 минуты:
>>delete this и this->close(true) выдают Segmentation fault.
Естественно ты сначала удаляешь указатель, а потом на него ссылаешься.
Попробуй наоботот :-)
А если серьезно смотри соообщение выше
Записан
BaltikS
Гость
Закрыть диалог из init()
«
Ответ #2 :
Сентябрь 14, 2006, 06:13 »
Цитировать
Насколько я помню для этого в процедуре init надо вернуть false на выходе.
return false;
Вообще инит это конструктор...
Ьыла похожая проблема, попробуй в showEvent по флагу закрывать. Фишка скроее всего в том что close() работает только после открытия окна......., т.е после show() или exec().
добавлено спустя 1 минуту:
Или соответственно не вызывать данные методы!
Записан
bigirbis
Гость
Закрыть диалог из init()
«
Ответ #3 :
Сентябрь 14, 2006, 08:28 »
Будьте проще и люди к вам потянутся.
Единственный способ, по Страуструпу, завершить конструктор на стадии выполнения - выбросить исключение, которое потом можно отловить в методе, где этот конструктор вызывается. Это решит все проблемы.
Записан
Vilgeforce
Гость
Закрыть диалог из init()
«
Ответ #4 :
Сентябрь 14, 2006, 08:31 »
Люди, спасибо за ответы! Будем пробовать.
Записан
QCasper
Гость
Закрыть диалог из init()
«
Ответ #5 :
Сентябрь 14, 2006, 09:19 »
не, ну "delete this" это сильно
Записан
Vilgeforce
Гость
Закрыть диалог из init()
«
Ответ #6 :
Сентябрь 14, 2006, 09:26 »
Цитата: "QCasper"
не, ну "delete this" это сильно
Да я уж и так и так... Дай, думаю, попробую. Не вышло :-)
Записан
Alex03
Гость
Закрыть диалог из init()
«
Ответ #7 :
Сентябрь 14, 2006, 14:30 »
А QApplication::postEvent ( QObject * receiver, QEvent * event )
не устраит?
Записан
Vilgeforce
Гость
Закрыть диалог из init()
«
Ответ #8 :
Сентябрь 14, 2006, 14:34 »
Ща документации под рукой нет, так что спрошу - какой QEvent надо послать диалогу в данном случае?
Записан
bigirbis
Гость
Закрыть диалог из init()
«
Ответ #9 :
Сентябрь 14, 2006, 14:56 »
Ребят, несерьезно слать QEvent из конструктора диалога дабы застрелить этот диалог. Могут быть различия от одной реализации к другой. Исключение лучший вариант.
Читайте Страуструпа!!!
Записан
Grigory
Гость
Закрыть диалог из init()
«
Ответ #10 :
Сентябрь 15, 2006, 16:12 »
есть еще такая функция, как deleteLater()
Записан
Alex03
Гость
Закрыть диалог из init()
«
Ответ #11 :
Сентябрь 23, 2006, 12:48 »
Цитата: "bigirbis"
Ребят, несерьезно слать QEvent из конструктора диалога дабы застрелить этот диалог. Могут быть различия от одной реализации к другой. Исключение лучший вариант.
Читайте Страуструпа!!!
Читайте доку на postEvent()!!!
А вот исключения не факт!
Сама Qt как известно исключения не пользует, и бросать исключения из конструктора класса порождённого от Qt-эшного я бы поостерёгся.
Да и троллтех не советует бросать исключения сквозь их код.
Записан
bigirbis
Гость
Закрыть диалог из init()
«
Ответ #12 :
Сентябрь 24, 2006, 13:06 »
По поводу исключений в Qt - отрицательных эмоций не испытываю, ибо если нормально код написан, все работант превосходно ( по крайней мере в четверке ).
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...