[Qt-qml] QML Timer triggered

Pekka.E.Jokela at nokia.com Pekka.E.Jokela at nokia.com
Fri Oct 21 07:36:03 CEST 2011


Thanks!


Ø  A slightly more tricky question is, what should the running property report from within the onTriggered handler in such a case?

I guess there is no "ultimate solution". To me the QTimer solution sounds intuitive aka running is false when the timer has done its job and reported that the time has been (well) spent.

-P


From: Kennedy Aaron (Nokia-MP-Qt/Brisbane)
Sent: 21 October, 2011 03:10
To: Brasser Michael (Nokia-MP-Qt/Brisbane); Jokela Pekka.E (Nokia-MP-Qt/Tampere)
Cc: qt-qml at qt.nokia.com
Subject: RE: [Qt-qml] QML Timer triggered

Hi,

That you cannot restart the timer from within the onTriggered handler is definitely wrong.

A slightly more tricky question is, what should the running property report from within the onTriggered handler in such a case?

Cheers,

Aaron

________________________________
From: qt-qml-bounces+aaron.kennedy=nokia.com at qt.nokia.com<mailto:qt-qml-bounces+aaron.kennedy=nokia.com at qt.nokia.com> [qt-qml-bounces+aaron.kennedy=nokia.com at qt.nokia.com] on behalf of Brasser Michael (Nokia-MP-Qt/Brisbane)
Sent: Friday, October 21, 2011 9:46 AM
To: Jokela Pekka.E (Nokia-MP-Qt/Tampere)
Cc: qt-qml at qt.nokia.com<mailto:qt-qml at qt.nokia.com>
Subject: Re: [Qt-qml] QML Timer triggered
Hi,

On 20/10/2011, at 7:13 PM, ext Pekka.E.Jokela at nokia.com<mailto:Pekka.E.Jokela at nokia.com> wrote:
Is the timer buggy or "works as specified":

Timer {
    repeat: false
    onTriggered: {
        console.log(running) // true - I would assume false in non-repeating timer
        restart() // does not work - it calls stop and start but the timer stops this automatically
    }
}

The issue is clear when looking at the implementation:

void QDeclarativeTimer::finished()
{
    Q_D(QDeclarativeTimer);
    if (d->repeating || !d->running)
        return;
    emit triggered();
    d->running = false;
    d->firstTick = false;
    emit runningChanged();
}

Shouldn't the 'running = false' and 'emit triggered()' be the other way around? This is is how the QTimer works i.e. in the timeout() handler the active property is already set to false and it can be restarted.

If this really is the wanted behavior, how do I restart the timer in the onTriggered event handler without setting the repeat to true (I use the same timer for many things and the repeat would just mess up everything).

I don't think the current behavior is intentional. You can follow the issue at https://bugreports.qt.nokia.com/browse/QTBUG-22004.

Regards,
Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt.nokia.com/pipermail/qt-qml/attachments/20111021/478d7ae5/attachment-0001.html 


More information about the Qt-qml mailing list