我有两个按钮:播放和暂停。我滑块吧。
我想按下播放器更改幻灯片的位置,直到发出事件或按下暂停按钮。因此我使用QEventLoop。
void MainWindow::slider()
{
for(min_value = ui->horizontalSlide->value(); min_value <= max_value; min_value++){
//msleep(2000);
ui->horizontalSlide->setValue(min_value);
}
}
void MainWindow::on_playButton_clicked()
{
QEventLoop loop2;
QObject::connect(this, SIGNAL(quitLoop()), &loop2... ?);
loop2.exec();
}
void MainWindow::on_pauseButton_clicked()
{
emit quitLoop();
}
但我不确定如何将QEventLoop连接到on_playButton_clicked函数....任何示例或建议?
非常感谢!
答案 0 :(得分:2)
没有必要为这种情况创建一个eventLoop,只需使用QTimer:
<强> *的.h 强>
private:
QTimer *timer
<强>的.cpp 强>
MainWindow::MainWindow(QWidget *parent)
:QMainWindow(parent)
{
[...]
timer = new QTimer(this);
connect(timer, &QTimer::timeout, [this](){
int value = ui->horizontalSlide->value();
ui->horizontalSlide->setValue(value+1);
if(ui->horizontalSlide->value() == ui->horizontalSlide->maximum())
timer->stop();
});
}
void MainWindow::on_playButton_clicked(){
timer->start(2000);
}
void MainWindow::on_pauseButton_clicked()
{
timer->stop();
}