如何在按下的 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";
}
}
我和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";
}
}