Название: Работа с таймером Отправлено: BigHom от Апрель 15, 2011, 11:30 Как правильно сделать , чтобы таймер стартовал при нажатии одной кнопки. А остановка таймера производидась при нажатии другой кнопки?
Название: Re: Работа с таймером Отправлено: Пантер от Апрель 15, 2011, 11:34 Код
Название: Re: Работа с таймером Отправлено: BigHom от Апрель 15, 2011, 12:03 Qt4.4.3 что делаю не так ?
1)пытаюсь организовать таймер в prog.cpp void prog::on_pushButton_clicked() { QTimer *timer1 = new QTimer(this); connect(timer1, SIGNAL(timeout()), this, SLOT(uptimer1())); timer1->start(ntime); } void prog::uptimer1() { timer1->stop(); } при трансляции выдаётся сообщение ,что в uptimer1 не объявлен timer1 2) при другом способе работы с таймером: в prog.h QTimer timer1; private slots: void on_pushButton_clicked(); void uptimer1(); Как сделать , чтобы при срабатывании таймера вызывалась uptimer1? Название: Re: Работа с таймером Отправлено: mutineer от Апрель 15, 2011, 12:05 1) Переменная timer1 живет локально в on_pushButton_clicked(), ее нет в других функциях
2) также через connect связать таймер со слотом Название: Re: Работа с таймером Отправлено: NicK от Апрель 15, 2011, 12:12 Вариант объявить указатель на таймер в заголовочном файле (например, в private) не подходит? :)
Название: Re: Работа с таймером Отправлено: BigHom от Апрель 15, 2011, 12:19 1) Переменная timer1 живет локально в on_pushButton_clicked(), ее нет в других функциях 1) понятно что только в on_pushButton_clicked(), а как сделать чтобы жила и в другой функции - как правильно организовать?2) также через connect связать таймер со слотом 2) в каком месте и как конкретно через connect связать таймер со слотом ? Название: Re: Работа с таймером Отправлено: BigHom от Апрель 15, 2011, 12:21 Код
Как к данному таймеру подключить функцию обработки таймера , в которой будет использоваться killTimer (timerId) ? Название: Re: Работа с таймером Отправлено: mutineer от Апрель 15, 2011, 12:24 1) Переменная timer1 живет локально в on_pushButton_clicked(), ее нет в других функциях 1) понятно что только в on_pushButton_clicked(), а как сделать чтобы жила и в другой функции - как правильно организовать?2) также через connect связать таймер со слотом 2) в каком месте и как конкретно через connect связать таймер со слотом ? 1) Сделай указатель на таймер членом класса, создание таймера и связывание со слотом перенеси в конструктор класса 2) В конструкторе, точно так же, как и сейчас, только с учетом что это уже не указатель. Но лучше второй вариант отбрось и делай по первому Название: Re: Работа с таймером Отправлено: Пантер от Апрель 15, 2011, 12:32 Код
Как к данному таймеру подключить функцию обработки таймера , в которой будет использоваться killTimer (timerId) ? Название: Re: Работа с таймером Отправлено: BigHom от Апрель 15, 2011, 14:26 Если класс наследуется от QObject, то переопредели у него timeEvent. Добавил в файл prog.h : protected: void timerEvent(QTimerEvent *); в файл prog.cpp : void berbas::timerEvent(QTimerEvent *) { uptimer1(); // обработка по срабатыванию таймера } вроде , всё работает - следует ли в свою void berbas::timerEvent(QTimerEvent *) делать вызов от оригинала и если да - то что именно дописать ? Название: Re: Работа с таймером Отправлено: Пантер от Апрель 15, 2011, 14:30 Чего?
Название: Re: Работа с таймером Отправлено: BigHom от Апрель 15, 2011, 14:51 Чего? чтобы всё было корректно ,чтобы все функции(в смысле действия) предка выполнялись , но тут вроде всё работает - только когда будет не один таймер - а обработчик один...Название: Re: Работа с таймером Отправлено: Пантер от Апрель 15, 2011, 14:55 Все пучком. Ничего больше не нужно.
Название: Re: Работа с таймером Отправлено: mutineer от Апрель 15, 2011, 14:56 Чего? чтобы всё было корректно ,чтобы все функции(в смысле действия) предка выполнялись , но тут вроде всё работает - только когда будет не один таймер - а обработчик один...QTimerEvent * - из этого параметра можно вытащить id таймера, который вызвал обработчик |