Как остановить al oop в нажатой кнопке QPushButton? - PullRequest
0 голосов
/ 26 мая 2020

У меня связь с Arduino. Мне нужно постоянно посылать символ в последовательный порт для обработки серии двигателей, когда я нажимаю кнопку. Итак, я создал QPushButton и хочу, чтобы при нажатии он отправлял этот символ. Но когда мне нужно создать al oop, я не знаю, как его сломать. Я пробовал это решение

...
Class .... {

private:
bool buttonPressed = false;

}

void MainWindow::on_pulsante1_pressed()
{
    buttonPressed = true;
    while (buttonPressed == true)
    {
    connect(ui->pulsante1,SIGNAL(released()),this,SLOT(on_pulsante1_released()));
    qDebug() << "pressed";
    }
}


void MainWindow::on_pulsante1_released()
{
   buttonPressed = false;
   qDebug() << "released";

}

Где я сделал не так?

1 Ответ

0 голосов
/ 26 мая 2020

Вы, вероятно, захотите использовать для этого QTimer. Также вы можете определить частоту срабатывания таймера. Например:

#include <QTimer>

..
Class .... {

private:
QTimer timer;

}

void MainWindow::MainWindow(){
    // in your constructor
    connect(&timer, [this]{
        //
        // write to serial here
        //
    });

}

void MainWindow::on_pulsante1_pressed()
{
    qDebug() << "pressed";
    timer.start(1); // run this every 1 milisecond
}


void MainWindow::on_pulsante1_released()
{
   timer.stop();
   qDebug() << "released";

}

    }

Взгляните на документацию QTimer

...