如何在按下的 QPushButton 中停止循环?

How to stop a loop in a QPushButton pressed?

我和Arduino有缘。当我按下按钮时,我需要不断地向串口发送一个字符来处理一个电机系列。所以我创建了一个 QPushButton 并且我想要在按下它时发送这个字符。 但是当我需要创建一个循环时,我不知道如何打破它。我试过这个解决方案

...
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";

}

我哪里做错了?

您可能想为此使用 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 documentation