Здравствуйте, гость ( Вход | Регистрация )
|
Litkevich Yuriy |
30.4.2010, 13:14
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Никак не могу понять, как же правильно работать со встроенным в QObject таймером.
В данный момент работа, схематично, выглядит так: есть несколько объектов разных классов, которые создаются по цепочке, один в другом. В каждом может быть таймер и он используется по одной и той же схеме.При завершении программы виндовоз показывает сообщение об ошибке ("Память не может быть read") Такая ситуация наблюдается у всех моих программ, которые используют таймер встроенный в QObject. И в разных версиях Qt, начиная с Qt 4.3.5 |
|
|
|
![]() |
|
Litkevich Yuriy |
30.4.2010, 22:41
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
факт, проблема была не в таймере.
был такой код: Говоря языком связистским, мне нужно было "поставить шлейф". Т.е. вместо штатного класса использовать заглушку, чтобы проверить часть программы без всяких коммуникаций с внешним миром.Я решил, что удобнее будет иметь переключалку в pro-файле. Создал каталог imitators и положил в него модифицированные файлы spcontroller.{h|cpp}, а в pro-файле сделал так: весь проект очистил, и собрал. Красота всё работает.Пока тестил, поменял немного интерфейс в spcontroller.h Всё опять очень хорошо, вот только при завершении работы стала возникать авария. Авария прекращалась когда я комментировал всю работу с таймерами. Это меня отвлекло. Пришлось собирать проект по шагам, добавляя файл за файлом и проверяя как работает.Сначала я убедился, что таймеры действительно не причём. Ну а когда дошла очередь до spcontroller (Собирал сразу версию с заглушкой, без штатных файлов. ) тут-то я и увидел проблему. Т.к. компиллер на отрез отказался компилировать проект. Причина: #include "spcontroller.h" - говорит компиллеру искать файл в каталоге данного файла. тогда я сделал так: #include <spcontroller.h> - говорит компиллеру искать файл в каталоге указанном с помощью ключа -I. Но и так компилироваться не будет, т.к. каталог imitators не находится в списке включаемых. И того нужно было ещё в pro-файл вписать: Разумеется если я добавлю штатные файлы в каталог с основными исходниками, опять начнутся проблемы. Т.к. каталог с основными исходниками уже есть в списке включаемых файлов. Принципиально проблемы-то начались именно из-за того, что я поменял интерфейс. Но очень "удачно" П.С. Вот такая вот у меня история сегодня случилась. П.ПС. 2:41 НСК, можно теперь и спать с чистой совестью. |
|
|
|
Litkevich Yuriy ошибка при завершении программы использующей таймер 30.4.2010, 13:14
igor_bogomolov Скорее всего не в таймере дело. Я таким же образом... 30.4.2010, 15:24
igor_bogomolov
Цитата2:41 НСК, можно теперь и спать с чистой сов... 30.4.2010, 23:17
Litkevich Yuriy Цитата(igor_bogomolov @ 1.5.2010, 3:17) А... 1.5.2010, 11:58![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 7.12.2025, 8:49 |