![]() |
|
|
![]()
|
|
| aspirin2003 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Диалоговое окно вызывается из конструктора main window
Как закрыть main window (ну или другими словами завершить приложение), когда в окне диалога нажали "Отмена", или закрыли окно крестиком? В приведенном выше коде close() не срабатывает. |
|||
|
||||
| Acer |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Вот этот код
находится в конструкторе MainWindow? Я обычно в конструктор MainWindow передаю указатель на QCoreApplication, то есть
И потом можно сделать свойство класса MainWindow:
и
Это сообщение отредактировал(а) Acer - 28.9.2008, 15:15 |
||||||||
|
|||||||||
| aspirin2003 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Почему то не помогает. Acer, а у тебя код, что ты привел работает?
У меня как открывалось главное окно, так и открывается по прежнему. |
|||
|
||||
| Acer |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Да, код не работает...
Ну, я вот как придумал... Может кто придумает лучше [main.cxx]
[MainWindow.h]
[MainWindow.cxx]
[Dialog.h]
[Dialog.cxx]
Это сообщение отредактировал(а) Acer - 28.9.2008, 18:26 |
||||||||||
|
|||||||||||
| aspirin2003 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Да, решение с флагом выглядит не очень. С таким же успехом кстати можно диалог вызывать из main до вызова главного окна.
Тем не менее спасибо за старания |
|||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Есть еще один вариант
Конструктор главного окна:
|
|||
|
||||
| Elfebet |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: 5 Всего: 14 |
правильнее было бы вызвать
-------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
|||
|
||||
| aspirin2003 |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Этот вариант вообще вызывает Debug Assertion Failure Добавлено через 59 секунд
Не работает. Главное окно все равно открывается. |
||||||||
|
|||||||||
| Elfebet |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: 5 Всего: 14 |
Хм... непонятна мне твоя проблема, если ты хочеш закрыть главное окно - вызови главному окну close(), если выйти из программы то тебе нужно закрыть все окна. Если все равно чего-то неработает покажи свой код как ты делаеш (включая главное окно, main, и диалог), мне кажется у тебя ошибка в другом...
Это сообщение отредактировал(а) Elfebet - 29.9.2008, 11:48 -------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
|||
|
||||
| aspirin2003 |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
По моему проблема описана довольно четко. По крайней мере Acer все понял. Если из конструктора главного окна вызвать close(), то оно НЕ закрывается, так же как и в случае с QApplication::closeAllWindows(). Привожу код: main
ClientMainWindow.cpp
диалог
|
||||||||
|
|||||||||
| Elfebet |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: 5 Всего: 14 |
Хм... отнаследуйся от QWidget вместо QMainWindow и все дела!
-------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
|||
|
||||
| aspirin2003 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
Нельзя, мне dock widgets нужны и т.п. |
|||
|
||||
| Elfebet |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 545 Регистрация: 15.5.2006 Где: Украина. Запорожь е. Репутация: 5 Всего: 14 |
Тогда единственный правильный вариант - это показать свой диалог перед созданием главного виджета и случае отмены выйти из программы или показать диалог (со случаем закрытия программы) после созданияи и активации главного окна (например в конце конструктора создать таймер, и через некоторое время вызвать этот диалог ), но не в КОНСТРУКТОРЕ главного окна.
ps. склоняюсь больше к первому варианту -------------------- Программист не должен всё знать... он должен знать где можно посмотреть |
|||
|
||||
| oagafonov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.9.2008 Репутация: нет Всего: нет |
Зачем вызывать форму аутентификации в конструкторе главного окна?
Я обычно это делаю в процедуре main, и затем если аутентификация прошла успешно, то запускаю главное окно. Это сообщение отредактировал(а) oagafonov - 29.9.2008, 14:55 |
|||
|
||||
| aspirin2003 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 18.3.2007 Где: Саратов Репутация: нет Всего: нет |
В моем случае аутентификация проходит на сервере, а это значит, что в main мне также нужно перетаскивать код, отвечающий за сетевое соединение, SSL-шифрование, и парсинг XML (протокол взаимодействия на нем основан). Это не есть гут, с моей точки зрения. Добавлено через 2 минуты и 58 секунд
С таймером это вообще извращение какое-то |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |