crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Таймер в консольном приложении. Базы данных.
smirnoffx
  опции профиля:
сообщение 10.5.2011, 20:44
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 6.11.2010
Пользователь №: 2173

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго всем времени суток.

Есть задача реализовать выгрузку неких данных в БД MSSQL по определенному интервалу. Реализация должна без проблем запускаться в linux и windows.

Для этого дабы не писать gui хочу реализовать консольное приложение.
Встал вопрос как реализовать таймер и функцию-обработчик события?

QTimer::singleShot(2000, &a, SLOT(f()));
не катит. Пишет что
No such slot QCoreApplication::f() in ...

Необходимо реализовать класс унаследованный от QCoreApplication в котором определить слот и таймер?

Как реализовать таймер?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
MoPDoBoPoT
  опции профиля:
сообщение 10.5.2011, 21:56
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


1. Для использования сигнал-слотов необходимо наследоваться от QObject, а также нужен макрос Q_OBJECT
2. Привыкай сразу для классов собственные .cpp и .h файлы создавать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
smirnoffx
  опции профиля:
сообщение 10.5.2011, 22:25
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 6.11.2010
Пользователь №: 2173

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(MoPDoBoPoT @ 10.5.2011, 22:56) *
1. Для использования сигнал-слотов необходимо наследоваться от QObject, а также нужен макрос Q_OBJECT
2. Привыкай сразу для классов собственные .cpp и .h файлы создавать

Вот так все работает:
#include <QtCore/QCoreApplication>
#include <QTimer>
#include <QObject>
#include <iostream>

class Tmr : public QObject
{
  Q_OBJECT
public:
  Tmr()
  {
      QTimer::singleShot(2000, this, SLOT(shot()));
  }

public slots:
  void shot();
};

void Tmr::shot()
{
 std::cout << "display test string";
}

int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);

   //Tmr s;
   //s.shot();

   return a.exec();
}


Но стоит в main создать объект класса
Tmr s;
s.shot();


как летят ошибки:
Цитата
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


В чем проблема?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 9:36