Таймер в консольном приложении. Базы данных. |
Здравствуйте, гость ( Вход | Регистрация )
Таймер в консольном приложении. Базы данных. |
smirnoffx |
10.5.2011, 20:44
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 6.11.2010 Пользователь №: 2173 Спасибо сказали: 0 раз(а) Репутация: 0 |
Доброго всем времени суток.
Есть задача реализовать выгрузку неких данных в БД MSSQL по определенному интервалу. Реализация должна без проблем запускаться в linux и windows. Для этого дабы не писать gui хочу реализовать консольное приложение. Встал вопрос как реализовать таймер и функцию-обработчик события? не катит. Пишет что
Необходимо реализовать класс унаследованный от QCoreApplication в котором определить слот и таймер? Как реализовать таймер? |
|
|
Алексей1153 |
10.5.2011, 20:57
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
один из вариантов - QThread . В потоке делать задержки нужного интервала и вызывать нужные функции.
у QThread есть таймеры с разной точностью void QThread::usleep ( unsigned long usecs ) [static protected] void QThread::msleep ( unsigned long msecs ) [static protected] void QThread::sleep ( unsigned long secs ) [static protected] Если не запускать новый поток, то воспользоваться напрямую помешают модификаторы protected, поэтому произведи свой класс и оттуда сделай public транплин |
|
|
smirnoffx |
10.5.2011, 21:12
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 6.11.2010 Пользователь №: 2173 Спасибо сказали: 0 раз(а) Репутация: 0 |
А почему так не работает:
Не может к слоту подсоединиться... |
|
|
MoPDoBoPoT |
10.5.2011, 21:56
Сообщение
#4
|
Участник Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: 9 |
1. Для использования сигнал-слотов необходимо наследоваться от QObject, а также нужен макрос Q_OBJECT
2. Привыкай сразу для классов собственные .cpp и .h файлы создавать |
|
|
smirnoffx |
10.5.2011, 22:25
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 6.11.2010 Пользователь №: 2173 Спасибо сказали: 0 раз(а) Репутация: 0 |
1. Для использования сигнал-слотов необходимо наследоваться от QObject, а также нужен макрос Q_OBJECT 2. Привыкай сразу для классов собственные .cpp и .h файлы создавать Вот так все работает:
Но стоит в main создать объект класса
как летят ошибки: Цитата D:/modul/modul-build-desktop/debug/main.o:-1: In function `Tmr': D:\modul\modul-build-desktop/../modul/main.cpp:11: ошибка: undefined reference to `vtable for Tmr' D:/modul/modul-build-desktop/debug/main.o:-1: In function `~Tmr': D:\modul\modul-build-desktop/../modul/main.cpp:7: ошибка: undefined reference to `vtable for Tmr' :-1: ошибка: collect2: ld returned 1 exit status В чем проблема? |
|
|
Алексей1153 |
10.5.2011, 22:44
Сообщение
#6
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
|
|
|
smirnoffx |
11.5.2011, 16:05
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 9 Регистрация: 6.11.2010 Пользователь №: 2173 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем спасибо. Заработало так:
main.cpp:
modul.h:
Думаю у меня скоро еще возникнут вопросы ))) Точнее так (прошу прощения за *.h файл): main.cpp:
modul.h:
Думаю у меня скоро еще возникнут вопросы ))) |
|
|
Текстовая версия | Сейчас: 23.11.2024, 20:13 |