Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: maks от Декабрь 07, 2008, 16:09



Название: Определение того что диалог уже был создан.
Отправлено: maks от Декабрь 07, 2008, 16:09
Есть несколько участков кода где может создаваться и отображаться один и тот же диалог. Как проверить что диалог уже не создан и он не отображается.


Название: Re: Определение того что диалог уже был создан.
Отправлено: Hort от Декабрь 07, 2008, 16:43
Есть несколько участков кода где может создаваться и отображаться один и тот же диалог. Как проверить что диалог уже не создан и он не отображается.
решение - первоночально указателю присваивать 0. и потом проверять. и при удалении диалога указатель тоже обнулять. а проверить видимость - isVisible()


Название: Re: Определение того что диалог уже был создан.
Отправлено: spirit от Декабрь 07, 2008, 17:57
заюзать QPointer (http://doc.trolltech.com/4.4/qpointer.html)


Название: Re: Определение того что диалог уже был создан.
Отправлено: maks от Декабрь 07, 2008, 18:37
Использовать указатель не подходит так как диалог у меня не модальный.


Название: Re: Определение того что диалог уже был создан.
Отправлено: spirit от Декабрь 07, 2008, 18:38
Использовать указатель не подходит так как диалог у меня не модальный.
не понял. в смысле не в куче создается, а в стеке?


Название: Re: Определение того что диалог уже был создан.
Отправлено: pastor от Декабрь 07, 2008, 18:41
Использовать указатель не подходит так как диалог у меня не модальный.

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


Название: Re: Определение того что диалог уже был создан.
Отправлено: BaltikS от Декабрь 07, 2008, 20:59
Можно пойти двумя путями.
1) Создать в конструктуре сразу же диалог и проверять его на isVisible(). Если FALSE - то делать show();
2) В конструторе создаваемого окна передать флаг Qt::WDestructiveClose. Тогда при его закрытии оно автоматом уничтожиться и при последующих вызовах его нужно будет всегда создавать!


Название: Re: Определение того что диалог уже был создан.
Отправлено: maks от Декабрь 07, 2008, 21:36
Да диалог  создавался не через new.


Название: Re: Определение того что диалог уже был создан.
Отправлено: pastor от Декабрь 07, 2008, 22:14
А чем неподходит предложенный выше вариант QPointer + isVisible() ?


Название: Re: Определение того что диалог уже был создан.
Отправлено: maks от Декабрь 07, 2008, 23:32
QPointer в самом деле помог. Просто сразу в него не въехал.