Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT4] подение при вызове exec() ! 
V
    Опции темы
SABROG
Дата 18.6.2009, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Дану, чего гадать-то. Без полных исходников программы мы тебе уже ничем не поможем, как выясняется Qt вполне может падать из-за выхода за пределы массива и портить данные где-нибудь совсем в другом месте без AV.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
mes
Дата 18.6.2009, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 7
Всего: 250



Цитата(Remiznik @  17.6.2009,  22:40 Найти цитируемый пост)
  я думаю что метод exec()  прорисовывает по верх всех окон окна которое его вызвало и блокирует работу всего остального приложения 

поправка 1 : не прорисовывает, а показывает (т.е фактически устанавливает флаг окну о том, что окно теперь видимо и может быть отрисовано) 
 прорисовка происходит в другом месте и в другое время (при обработке сообщения о прорисовке).
поправка 2 : блокирует не работу всего приложения, а только юзерское взаимодействие (в зависимости от режима со всеми остальными окнами приложения, или только с родительским)
Цитата(Remiznik @  17.6.2009,  22:40 Найти цитируемый пост)
Как это происходит я незнаю и как уже сказал в пунке 2 отследить что вызываеться какието стороние функции можно только при падении. 

Происходит путем добавления своего цикла обработки сообщений, в котором все "нежелательные" сообщения игнорируются. Однако остальные (не юзерского взаимодействия) продолжают спокойно обрабатываться.

Цитата(Remiznik @  17.6.2009,  22:40 Найти цитируемый пост)
И есле уж и вызываеться прорисовка главного окна то только после того как происходит событие закрытие диалогового окна вызвавшего exec() но ни как до этого .... ведь в этом нет смысла !

А если диалоговое окно переместили в сторону ? на старом месте остается пустота или остатки Вашего даилога ?!  smile 
Перерисовка окон происходит при любом ресайзинге и перемещении диалогового окна, в том числе и при первом (когда оно толжко появилось).
Точнее сказать не сама перерисовка, а вызов функции перерисовки, а она уж решает нужно ли рисовать какую то область или нет.


Цитата(Remiznik @  17.6.2009,  22:40 Найти цитируемый пост)
П.С ешо раз напоню что приложение падает не каждый раз при вызове exec() . Оно может упасть и с 1-го вызова так и 10-го. 

Если у Вас муссор в какой нибудь переменной, то именно так и будет.

Цитата(Remiznik @  17.6.2009,  22:40 Найти цитируемый пост)
это какойто страный вызов MainWindow::paintEvent (this=0xbffff430, e=0xbfffd570) at src/mainwindow.cpp:406 так как в начале кажой функции у менять есть консольное сообшение о том что даная ыункция вызываеться и при подение на консоли нечего нет тоесть вызываеться какаято левая функция или както страно !

Во первых неужто так трудно показать эту функцию ? если сомневаетесь она или нет, то нужна та которая лежит в файле mainwindow.cpp на 406 строчке.  smile 
Во вторых, Вы свое сообщение наверняка отправляете в поток, и поэтому Вы не дождетесь его появления на консоли если прога упадет.  smile 

Цитата(Remiznik @  17.6.2009,  22:40 Найти цитируемый пост)
учитывая предыдцшее что я не могу отследить в каком месте имено падение так как я явно при нармально работе не вижу какая функция вызываеться как такое вобше может происходить !

Может все таки выложите ту часть кода, о которой Вас просили Выше, или же она под строгим секретом ?!  smile 



--------------------
PM MAIL WWW   Вверх
Remiznik
Дата 18.6.2009, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 30.4.2005

Репутация: нет
Всего: 1



выложу просто под рукой счас нет ! 

но должен заметить что я закоментил всю функцию отрисовки тоесть вызов её остаёться но никаких действий не происходит и вроде падатьперестало но я не уверен так как я несколько раз проверел не упало но как уже говарил она может и не спервого а с n-го раза упасть такчто тестирую.

но я так и не понял как вызываеться эты функция я не понял ! даже если она вызваеться почему на консоль не выводиться что она вызвана ?
PM MAIL   Вверх
Remiznik
Дата 22.6.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 30.4.2005

Репутация: нет
Всего: 1



извеняюсь за поднятую панику ) видно глаз совсем замозолился ))) все работает нармально и стек был прав падение вызывалось функцией прорисовки я там не использовал неправельно переменую ! и на консоль всё выводтся нармально .... видимо так заработался что уже не замечал !

всем спасибо)) очень помогли !
PM MAIL   Вверх
SABROG
Дата 22.6.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(Remiznik @  22.6.2009,  10:30 Найти цитируемый пост)
всем спасибо)) очень помогли ! 

А я у тебя еще 6 июня спросил, что отладчик говорит. Если бы прислушался, то смог в тот же день свою проблему решить. smile


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Remiznik
Дата 22.6.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 30.4.2005

Репутация: нет
Всего: 1



я послушал )))
 просто не сразу разобрался что к чему .... и меня смушало что на консоль не выводилось сообшение на что функция вызвана .... оказалось что я вывод на консоль поставил в конце функции и потому до этого места она не доходила ))).... а я это не заметил )
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0667 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.