Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Qt: непонятное поведение окон  (Прочитано 1645 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Qt: непонятное поведение окон
« : 18 Мая 2012, 22:22:12 »
здравствуйте.

такая ситуация: у меня есть главное окно программы и другие окна. в конструкторе главного я создаю остальные окна и отображаю их методом show. освобождают память эти окна, как я понимаю, сами по нажатию "крестика" в заголовке окна. все бы ничего. НО, если главное окно программы скрыто методом hide и находится в трее, то, например, если я вызову другое окно и закрою его - закроется и главное окно приложения, то есть вся программа. Вобщем если закрыть неглавное окно программы, когда главное скрыто, то закрывается все приложение. при запуске из консоли при вылете программа ни на что не ругается. если нужны подробности - опишу.

помогите понять в чем дело.
« Последнее редактирование: 18 Мая 2012, 22:25:55 от FluffyMan »

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5675
  • Все по палатам!
    • Просмотр профиля
Re: Qt: непонятное поведение окон
« Ответ #1 : 18 Мая 2012, 22:52:47 »
Так может для главного окна это нормальное поведение, иначе как его закрыть, если оно невидимо.
Может надо не скрывать окно, а showMaximized() ?
Извините, я все еще учусь

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: непонятное поведение окон
« Ответ #2 : 18 Мая 2012, 23:15:15 »
Главное окно сворачивается. Но закрыть его можно из контекстного меню по щелчку правой кнопки мыши в трэе.

Пользователь решил продолжить мысль 18 Мая 2012, 23:34:38:
Блин, посмотрел в «мониторе», оказывается мои окна не освобождают память при закрытии. Утечка памяти происходит. Хм, может причина в этом? такого странного поведения приложения? Или есть другие варианты
« Последнее редактирование: 18 Мая 2012, 23:34:38 от FluffyMan »

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5675
  • Все по палатам!
    • Просмотр профиля
Re: Qt: непонятное поведение окон
« Ответ #3 : 19 Мая 2012, 00:54:51 »
Главное окно сворачивается.
Метод hide не сворачивает окно, а делает его невидимым.
Извините, я все еще учусь

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: непонятное поведение окон
« Ответ #4 : 19 Мая 2012, 01:11:39 »
Главное окно сворачивается.
Метод hide не сворачивает окно, а делает его невидимым.

Да, это я неправильно выразился. Я делаю его невидимым. То есть Вы хотите сказать, что если закрывается любое из окон приложения, то все невидимые тоже закрываются? По идее так не должно быть. Или я туплю жестко?)
« Последнее редактирование: 19 Мая 2012, 01:13:43 от FluffyMan »

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5675
  • Все по палатам!
    • Просмотр профиля
Re: Qt: непонятное поведение окон
« Ответ #5 : 19 Мая 2012, 01:38:49 »
FluffyMan,
Может быть и так, это сорсы смотреть надо... Я это и имел ввиду
Извините, я все еще учусь

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: непонятное поведение окон
« Ответ #6 : 19 Мая 2012, 01:50:34 »
Завтра подумаю над этим. Во-первых утечку в программе устраню, может изза этого всё таки. Во-вторых может еще какой кривой код у себя найду. Отпишусь о результатах

Пользователь решил продолжить мысль 19 Мая 2012, 17:45:47:
Вобщем, я решил не создавать объекты окон и удалять их, а создать объекты окон один раз и просто скрывать/открывать их когда надо. Естественно, что при скрытии окна другие невидимые окна не закрываются, соответственно приложение продолжает работать. Может это дикий костыль?

И вобще, как принято поступать - создавать ВСЕ окна приложения при старте программы (тем самым забивая оперативную память), либо создавать неглавные окна по мере их необходимости?
« Последнее редактирование: 19 Мая 2012, 17:52:57 от FluffyMan »

 

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