crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> QTimer не срабатывает слот
Ov3r1oad
  опции профиля:
сообщение 24.2.2012, 16:47
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 21.12.2011
Пользователь №: 3085

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




Репутация:   0  


Есть объект QTimer, связан со слотом, но почему-то после start в этот слот не заходит, хотя время идёт. В чем может быть проблема?

class object: public QDialog
{
    Q_OBJECT
    
    QTimer* Timer;
    
        void func();
public slots:
        void update();
};


ну а потом в функции func я вызываю start. Не заходит в update.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 24.2.2012, 17:15
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


1) где и как создаёшь объект QTimer?
2) где соединяешь сигнал и слот ?
3) где вызываешь start ?
4) как определяешь, что "время идёт"?

Сообщение отредактировал Алексей1153 - 24.2.2012, 17:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 24.2.2012, 17:15
Сообщение #3


Участник
**

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

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




Репутация:   2  


Цитата(Ov3r1oad @ 24.2.2012, 22:47) *
Есть объект QTimer, связан со слотом, но почему-то после start в этот слот не заходит, хотя время идёт. В чем может быть проблема?

class object: public QDialog
{
    Q_OBJECT
    
    QTimer* Timer;
    
        void func();
public slots:
        void update();
};


ну а потом в функции func я вызываю start. Не заходит в update.

а вызов показать ?

Сообщение отредактировал maint - 24.2.2012, 17:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Ov3r1oad
  опции профиля:
сообщение 24.2.2012, 17:31
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 21.12.2011
Пользователь №: 3085

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




Репутация:   0  


class object: public QDialog
{
    Q_OBJECT

    QPushButton* Button;
    QTimer* Timer;
    
        void func();
public slots:
        void update();
};

object::object ()
{
     Button = new QPushButton(this);
     Timer = new QTimer (this);

     connect(Button, SIGNAL(clicked(bool)), this, SLOT(func()));
     connect(Timer, SIGNAL(timeout()), this, SLOT(update ()));
}

void object::func()
{
     Timer->start(100);
     //bla-bla-bla
     Timer->stop();
}

void object::update();
{
       //bla-bla-bla
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 24.2.2012, 17:41
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


:) а как он обработается, если ты его тут же остановил ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Ov3r1oad
  опции профиля:
сообщение 24.2.2012, 17:44
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 21.12.2011
Пользователь №: 3085

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




Репутация:   0  


Алексей1153, я неверно не очень понимаю суть объекта QTimer. В чем проблема, что я его остановил потом? В промежуток между стартом и стопом выполяняется затратный по времени код.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 24.2.2012, 17:48
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Ov3r1oad, у тебя однопоточное приложение. Пока ты не вышел из функции func у тебя ни одно сообщение системы не обработается без специальных приёмов.

Расскажи задачу
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Ov3r1oad
  опции профиля:
сообщение 24.2.2012, 18:12
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 21.12.2011
Пользователь №: 3085

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




Репутация:   0  


Алексей1153, ну в общем, я уже по сути все рассказал =). Вот мне нужно, чтобы каждую 0.1 секунду для кода, который между стартом и стопом, вызывалась функция (в которой меняется уровень ProgressBar). Все равно для меня не очень понятен механизм работы QTimer. Получается, я должен вызвать start и stop в разных функциях?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 24.2.2012, 18:16
Сообщение #9


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

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




Репутация:   7  


Ov3r1oad,
нужно или выпрямить рученки, или грамотно запостить свой код.

А по теме: а я не вижу (ну никак) слота
SLOT(func())


вижу только приватный метод func().

И не поленись, смотри что оно тебе говорит в консоль, наверняка тоже скажет, что нет слота func().
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Ov3r1oad
  опции профиля:
сообщение 24.2.2012, 18:25
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 21.12.2011
Пользователь №: 3085

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




Репутация:   0  


kuzulis, да это опечатка, слот это, слот. Я просто даже не вижу, как здесь отредактировать сообщение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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