Поиск:

Ответ в темуСоздание новой темы Создание опроса
> События по дате 
V
    Опции темы
Meragon
Дата 27.5.2012, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Никак не могу реализовать события, происходящие по определенной дате.
Т.е., допустим, при наступление завтра был запланирован определенный метод, назначенный на это событие. 
Вопрос в том как, что нужен прланировщик какой-то или в цикле главной программы это дело сверять каждую милисекунду? Мне бы как-нибудь попроще. Если событий будет больше 1000, то явно будут проблемы.
PM MAIL   Вверх
_GRIN_
Дата 27.5.2012, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


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

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



Meragon, QTimer тебе в помощь: http://qt-project.org/doc/qt-4.8/qtimer.html#timeout
Если лень мониторить время самому, то:
1. при создании события создаёшь соответствующий таймер (интервал для него вычислишь в момент создания).
2. таймер запихиваешь в какой-нить контейнер, откуда потом после срабатывания удалишь его.
3. в слоте заведённом на timeout() таймера через sender() определяешь таймер и выполняешь необходимое действие.
4. Таймер, в случае ненадобности удаляешь.

Второй вариант - реализуешь действия через паттерн команда, унаследовав от QObject - тогда создаёшь команду и ставишь ей таймер через QObject::startTimer(). - а команда внутри timerEvent() реализует требуемое дейстие и в случае необходимости вызывает свой deleteLater() что бы удалиться на следующем eventLoop-е.



--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
volatile
Дата 28.5.2012, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Meragon @  27.5.2012,  16:53 Найти цитируемый пост)
Если событий будет больше 1000, то явно будут проблемы. 

Я когда-то делал простую напоминалку.
Обошелся всего одним таймером, хотя кол-во событий может быть неограничено.
События хранились в отсортированном по времени срабатывания массиве, (у меня это был map)
Таймер ставится на самое ближайшее событие.
При его срабатывании, событие удаляется (если циклическое, то перемещается), таймер снова ставится на самое ближайшее событие.
Все.



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


Новичок



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

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



_GRIN_, да таймер видел уже, но о том, что сказал volatile, не подумал.
Попробую реализовать.

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

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

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


 




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


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

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