Search code examples
qtuser-interfacelatencyqpushbutton

How to make latency of QPushButton for push?


I would like to create QPushButton which gives an opportunity to press not often than one time in 200 msec. When I use func sleep(200) all GUI thread will stop. Waiting for your ideas! Thankx!


Solution

  • Something like this:

    class Controller : public QObject
    {
        // ...
    private:
        QPointer< QPushButton > btn;
    private slots:
        void onClicked();
        void enableClick();
    };
    
    Controller::onClicked()
    {
        disconnect( btn, SIGNAL( clicked() ), SLOT( onClicked() ) );
        QTimer::singleShot( 200, this, SLOT( enableClick() ) );
        // Optional
        btn->setEnabled( false );
    }
    
    Controller::enableClick()
    {
        connect( btn, SIGNAL( clicked() ), SLOT( onClicked() ) );
        // Optional
        btn->setEnabled( true );
    }