Push button long&short time press control

  • Hi,
    I want to control a pushbutton long or short time pressed status with a timer. If i use with "::on_pushButton_pressed()" and "::on_pushButton_released()" how can i check the pressed time ? Or which way must i use ?

  • Qt Champions 2017

    You want to know how long a user hold down the button?
    There is

  • @mrjj
    Yes, i want to know if button pressed short and released or it is pressed long time (maybe 1000ms). first i think maybe a timer can be defined globally and button pressed and released functions can be used to control the short or long press, but i can not use a global timer , you maybe give idea more clearly.

  • Qt Champions 2017

    Ok, it doesn't have to be global, but could live
    in the class that has ::on_pushButton_XX

    Alternatively you could subclass QPushButton and create one
    that can do this it self ? (internal handling of the QElapsedTimer)

    Can I ask why you need to know this?
    Most will just click it and released will come very fast.

  • @mrjj
    Because my button must do 2 different work according to the short or long press. if it is pressed short, it execute a mission and if it is pressed long it executes another different work.

  • Qt Champions 2017

    ok. I understand.
    There is also
    You could just "count" and use the count to decide if function 1 or 2.

    If you need this for more that 1 button, a new Button type is the way to go.
    You could even make new signal giving the pressed time or count.

  • @mrjj
    As far as i understand autoRepeat() make buttons do same thing periodically,( am i right ? ) . But i want my button do something "only once" as far as it is pressed long until it is released .

  • Qt Champions 2017

    yes, it often used for that. But you could also use it to keep track of
    how long it was pressed.
    Since it will also give mutiple released , i guess using
    QElapsedTimer is easier.

Log in to reply

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.