Russian Qt Forum
Сентябрь 30, 2024, 22:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение того что диалог уже был создан.  (Прочитано 5205 раз)
maks
Гость
« : Декабрь 07, 2008, 16:09 »

Есть несколько участков кода где может создаваться и отображаться один и тот же диалог. Как проверить что диалог уже не создан и он не отображается.
Записан
Hort
Гость
« Ответ #1 : Декабрь 07, 2008, 16:43 »

Есть несколько участков кода где может создаваться и отображаться один и тот же диалог. Как проверить что диалог уже не создан и он не отображается.
решение - первоночально указателю присваивать 0. и потом проверять. и при удалении диалога указатель тоже обнулять. а проверить видимость - isVisible()
« Последнее редактирование: Декабрь 07, 2008, 17:00 от Hort » Записан
spirit
Гость
« Ответ #2 : Декабрь 07, 2008, 17:57 »

заюзать QPointer
Записан
maks
Гость
« Ответ #3 : Декабрь 07, 2008, 18:37 »

Использовать указатель не подходит так как диалог у меня не модальный.
Записан
spirit
Гость
« Ответ #4 : Декабрь 07, 2008, 18:38 »

Использовать указатель не подходит так как диалог у меня не модальный.
не понял. в смысле не в куче создается, а в стеке?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Декабрь 07, 2008, 18:41 »

Использовать указатель не подходит так как диалог у меня не модальный.

А причем тут модальность?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
BaltikS
Гость
« Ответ #6 : Декабрь 07, 2008, 20:59 »

Можно пойти двумя путями.
1) Создать в конструктуре сразу же диалог и проверять его на isVisible(). Если FALSE - то делать show();
2) В конструторе создаваемого окна передать флаг Qt::WDestructiveClose. Тогда при его закрытии оно автоматом уничтожиться и при последующих вызовах его нужно будет всегда создавать!
Записан
maks
Гость
« Ответ #7 : Декабрь 07, 2008, 21:36 »

Да диалог  создавался не через new.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #8 : Декабрь 07, 2008, 22:14 »

А чем неподходит предложенный выше вариант QPointer + isVisible() ?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
maks
Гость
« Ответ #9 : Декабрь 07, 2008, 23:32 »

QPointer в самом деле помог. Просто сразу в него не въехал.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.117 секунд. Запросов: 23.