Russian Qt Forum
Май 07, 2024, 19:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Параметры в слоте, Почему не работает?  (Прочитано 3375 раз)
smirnoff
Гость
« : Май 16, 2011, 18:50 »

Есть код:
Код:
class Tmr : public QObject
{
   Q_OBJECT
public:
   Tmr()
   {
   }

public slots:
   void sync(char* param[])
   {
        if(dbconnect("QODBC3", param[1]))
        {
            exportMR();
        }
   }

   void atimer(int msec, char* param[])
   {
       QTextStream out(stdout);
       QTimer::singleShot(msec, this, SLOT(sync(char* param[])));

       out << "Beginning of work..." << endl;
   }
...

Однако при запуске пишет: QObject::connect: No such slot Tmr::sync(char* param[]) in ...
Как с этим бороться? Как передать параметры в функцию sync()?
Записан
alexman
Гость
« Ответ #1 : Май 16, 2011, 19:03 »

Откуда param то возьмется?
Записан
smirnoff
Гость
« Ответ #2 : Май 16, 2011, 19:35 »

Откуда param то возьмется?

Передается в atimer указатель... оттуда и возьмется и передастся функции sync()
Записан
alexman
Гость
« Ответ #3 : Май 16, 2011, 19:44 »

Откуда param то возьмется?

Передается в atimer указатель... оттуда и возьмется и передастся функции sync()
Почитай про сигналы-слоты...
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Май 16, 2011, 20:13 »

>>Передается в atimer указатель... оттуда и возьмется и передастся функции sync()
а по подробнее.
Записан

Юра.
smirnoff
Гость
« Ответ #5 : Май 16, 2011, 22:08 »

>>Передается в atimer указатель... оттуда и возьмется и передастся функции sync()
а по подробнее.
куда уж подробнее. я думаю задача ясна. необходимо найти решение. не уже ли никто с этим не сталкивался и не может привести пример кода?
Записан
alexman
Гость
« Ответ #6 : Май 16, 2011, 22:35 »

Попробуй так!
Код:
class Tmr : public QObject
{
   Q_OBJECT
public:
   Tmr()
   {
   }

public slots:
   void sync()
   {
        if(dbconnect("QODBC3", _param[1]))
        {
            exportMR();
        }
   }

   void atimer(int msec, char* param[])
   {
       _param = param;
       QTimer::singleShot(msec, this, SLOT(sync()));

       out << "Beginning of work..." << endl;
   }

private:
   char** _param;//только следи, чтобы указатель был валиден!
...

Но все же почитай про сигналы-слоты...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 22.