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 в котором определить слот и таймер?

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


Новичок


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

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




Репутация:   0  


Всем спасибо. Заработало так:

main.cpp:
#include <QtCore/QCoreApplication>
#include <modul.h>

#include <iostream>

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

void Tmr::atimer(int msec)
{
   QTimer::singleShot(msec, this, SLOT(shot()));
}

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

   Tmr tobj;
   tobj.atimer(10000);

   return a.exec();
}


modul.h:
#include <QtCore/QCoreApplication>
#include <modul.h>

#include <iostream>

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

void Tmr::atimer(int msec)
{
   QTimer::singleShot(msec, this, SLOT(shot()));
}

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

   Tmr tobj;
   tobj.atimer(10000);

   return a.exec();
}


Думаю у меня скоро еще возникнут вопросы )))

Точнее так (прошу прощения за *.h файл):

main.cpp:
#include <QtCore/QCoreApplication>
#include <modul.h>

#include <iostream>

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

void Tmr::atimer(int msec)
{
   QTimer::singleShot(msec, this, SLOT(shot()));
}

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

   Tmr tobj;
   tobj.atimer(10000);

   return a.exec();
}


modul.h:
#ifndef MODUL_H
#define MODUL_H

#include <QObject>
#include <QTimer>

class Tmr : public QObject
{
   Q_OBJECT
public:
   Tmr()
   {
   }

public slots:
   void shot();
   void atimer(int msec);
};

#endif // MODUL_H


Думаю у меня скоро еще возникнут вопросы )))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




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