crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Создание только одного экземпляра окна
breeve
  опции профиля:
сообщение 27.1.2011, 16:49
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Как сделать чтобы окно можно было открыть только один раз.
Есть основное окно, и модальное диалоговое. У основного класса есть слот который создает диалоговое.
Если два раза нажать кнопку, будет два окна. Как перед созданием проверять есть ли уже такое окно, но только таким образом что если такого окна еще нет чтобы он не повис))?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 28.1.2011, 7:39
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Раскрывающийся текст
для справки :)

//студийное определение
#ifndef NULL
#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#endif


а лично мне предпочитается 0 . Его писать проще


однако, отклонились от темы

Цитата(breeve @ 27.1.2011, 18:49) *
Как сделать чтобы окно можно было открыть только один раз.
Есть основное окно, и модальное диалоговое. У основного класса есть слот который создает диалоговое.
Если два раза нажать кнопку, будет два окна. Как перед созданием проверять есть ли уже такое окно, но только таким образом что если такого окна еще нет чтобы он не повис))?


если вне некой функции окно не используется (модальное ж всё-таки), то лучше просто инкапсулировать объект в теле функции:

void QMyClass::F(<...>)
{
   static QMyDialod  dialog(this);

  <...>


  int res=dialog.exec();

  <...>
}


для немодального:
void QMyClass::F(<...>)
{
  static QMyDialod  dialog(this);

  if(!dialog.isHidden())
  {
     dialog.show();
  }

  <...>
}


однако, следует помнить, что static переменная будет единая для ВСЕХ экземпляров класса QMyClass

Сообщение отредактировал Алексей1153 - 28.1.2011, 8:35
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- breeve   Создание только одного экземпляра окна   27.1.2011, 16:49
- - abc   дык если оно модальное, оно не должно давать возмо...   27.1.2011, 16:59
|- - breeve   Цитата(abc @ 27.1.2011, 16:59) дык если о...   27.1.2011, 17:04
- - abc   а нельзя создать это диалоговое окно 1 раз в конст...   27.1.2011, 17:11
|- - breeve   Цитата(abc @ 27.1.2011, 17:11) а нельзя с...   27.1.2011, 17:20
- - abc   сделать глобальную переменную есть/нет окно, в кно...   27.1.2011, 17:27
- - Rocky   Что-то не понятно ничего.... Пора домой идти) Это...   27.1.2011, 19:05
- - Алексей1153   нужно не глобальную, а статическую переменную Буд...   27.1.2011, 20:52
- - Litkevich Yuriy   Цитата(breeve @ 27.1.2011, 19:04) Как вар...   27.1.2011, 21:17
- - Rocky   Litkevich Yuriy, а в чем отличие (может даже с точ...   27.1.2011, 21:55
- - DEADHUNT   Цитата(Rocky @ 27.1.2011, 21:55) Litkevic...   27.1.2011, 22:59
- - Алексей1153   Раскрывающийся текстдля справки //студийное опре...   28.1.2011, 7:39
- - Rocky   Раскрывающийся текстПо-поводу Цитата//студийное о...   28.1.2011, 8:36
- - Алексей1153   Цитата(Rocky @ 28.1.2011, 10:36) может та...   28.1.2011, 8:40
- - Litkevich Yuriy   Цитата(Rocky @ 27.1.2011, 23:55) Просто я...   28.1.2011, 21:14


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 11:09