Russian Qt Forum

Qt => Вопросы новичков => Тема начата: bekor от Март 02, 2012, 18:37



Название: Остановка таймера QTimer
Отправлено: bekor от Март 02, 2012, 18:37
Привет,
подскажите пожалуйста как надо остановить таймер
Код:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
[...]
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(100);
}
таймер запускается и нормально работает но когда я пытаюсь остановить
его в обработчике нажатия кнопки путем вызова
Код:
timer->stop();
то выплевывает ошибку типа "timer not declared in this scope"

попробовал так
Код:
MainWindow::timer->stop();
все равно не помогает >:(

что я делаю неправильно?


Название: Re: Остановка таймера QTimer
Отправлено: mutineer от Март 02, 2012, 18:42
Указатель на таймер существует только в конструкторе


Название: Re: Остановка таймера QTimer
Отправлено: V1KT0P от Март 02, 2012, 18:43
таймер запускается и нормально работает но когда я пытаюсь остановить
его в обработчике нажатия кнопки путем вызова
Код:
timer->stop();
то выплевывает ошибку типа "timer not declared in this scope"
А ты попробуй не напрямую вызывать а через сигнал.


Название: Re: Остановка таймера QTimer
Отправлено: lolbla2 от Март 02, 2012, 18:43
Привет,
подскажите пожалуйста как надо остановить таймер
Код:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
[...]
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(100);
}
таймер запускается и нормально работает но когда я пытаюсь остановить


его в обработчике нажатия кнопки путем вызова
Код:
timer->stop();
то выплевывает ошибку типа "timer not declared in this scope"

попробовал так
Код:
MainWindow::timer->stop();
все равно не помогает >:(

что я делаю неправильно?

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


Название: Re: Остановка таймера QTimer
Отправлено: bekor от Март 02, 2012, 21:08
Если можно напишите это в виде кода как мне надо писать, а то что то не совсем соображаю,
В QT недавно начал разобратся.


Название: Re: Остановка таймера QTimer
Отправлено: V1KT0P от Март 02, 2012, 21:31
Если можно напишите это в виде кода как мне надо писать, а то что то не совсем соображаю,
В QT недавно начал разобратся.
Вот так например: http://rghost.ru/36814408 (http://rghost.ru/36814408)


Название: Re: Остановка таймера QTimer
Отправлено: bekor от Март 02, 2012, 22:00
V1KT0P большое спасибо :)
теперь понятно стало.


Название: Re: Остановка таймера QTimer
Отправлено: mutineer от Март 02, 2012, 23:14
Если можно напишите это в виде кода как мне надо писать, а то что то не совсем соображаю,
В QT недавно начал разобратся.
Прежде чем разбираться в Qt, разберись сначала в С++


Название: Re: Остановка таймера QTimer
Отправлено: Bepec от Март 03, 2012, 11:02
mutineer ты конечно прав, но...

Разбираться именно я начал с C, далее через месяц Qt, сейчас уже Qt нехватает, изучаю С++ ;)


Название: Re: Остановка таймера QTimer
Отправлено: mutineer от Март 03, 2012, 11:23
mutineer ты конечно прав, но...

Разбираться именно я начал с C, далее через месяц Qt, сейчас уже Qt нехватает, изучаю С++ ;)

То есть на Qt ты писал не имея вообще никакого понятия про ООП?


Название: Re: Остановка таймера QTimer
Отправлено: BRE от Март 03, 2012, 11:28
То есть на Qt ты писал не имея вообще никакого понятия про ООП?
Почему "писал", он и сейчас пишет. :)


Название: Re: Остановка таймера QTimer
Отправлено: Bepec от Март 03, 2012, 11:41
mutineer - ты прав. Я начинал освоение ООП, переходя с С на С++(библиотеки Qt).

И было трудноватенько ;)

PS BRE [агр] [агр]


Название: Re: Остановка таймера QTimer
Отправлено: mutineer от Март 03, 2012, 11:43
mutineer - ты прав. Я начинал освоение ООП, переходя с С на С++(библиотеки Qt).

И было трудноватенько ;)

PS BRE [агр] [агр]

Сочувствую...


Название: Re: Остановка таймера QTimer
Отправлено: sudo от Март 05, 2012, 10:40
потому что ты таймер создаёшь в конструкторе а потом видимо он уничтожается, попробуй указатель  на таймер засунуть в класс формы а уже потом в конструкторе выдели под него память

Куда ж он уничтожится, если создан на куче? Удалиться он может, если удалится родитель или будет вызвано удаление, а так просто нет на него указателя

ТС, придётся делать поле класса с таймером