C++ 如何实时暂停操作(Qt5)?
我有一个函数,可以读取一些命令并执行与这些命令相关的操作。问题是我想在每个命令后暂停程序。这是我的代码:C++ 如何实时暂停操作(Qt5)?,c++,qt5,C++,Qt5,我有一个函数,可以读取一些命令并执行与这些命令相关的操作。问题是我想在每个命令后暂停程序。这是我的代码: void MainWindow::moveDown(){ QPoint l = ui->label->pos(); int x = l.rx(); int y = l.ry(); if(y+50 <= 630){ QPixmap pix(":/resources/img/Penguin.png"); int
void MainWindow::moveDown(){
QPoint l = ui->label->pos();
int x = l.rx();
int y = l.ry();
if(y+50 <= 630){
QPixmap pix(":/resources/img/Penguin.png");
int w = ui->label->width();
int h = ui->label->height();
ui->label->setPixmap(pix.scaled(w,h,Qt::KeepAspectRatio));
y = y+50;
ui->label->setGeometry(x, y, 50, 50);
//sleep(1);
}
}
void主窗口::moveDown(){
QPoint l=ui->label->pos();
int x=l.rx();
int y=l.ry();
如果(y+50标签->宽度();
int h=ui->label->height();
ui->label->setPixmap(pix.scaled(w,h,Qt::keepasspectratio));
y=y+50;
ui->label->setGeometry(x,y,50,50);
//睡眠(1);
}
}
如您所见,我尝试了
sleep()
函数,但它会在标签开始移动之前暂停程序。我还应该尝试什么?我多年前就实现了这个函数,从那时起我就一直在使用它。它让事件循环保持运行,以便UI在睡眠期间不会冻结。它通过对请求的毫秒数执行本地事件循环来实现这一点。它还如果应用程序要退出,则中止循环:
/*
* Sleep for 'ms' milliseconds without freezing the UI.
*/
void sleepLoop(const long ms)
{
QEventLoop idle_loop;
QTimer timer;
timer.setSingleShot(true);
QObject::connect(&timer, &QTimer::timeout, &idle_loop, &QEventLoop::quit);
QObject::connect(qApp, &QCoreApplication::aboutToQuit, &idle_loop, &QEventLoop::quit);
timer.start(ms);
idle_loop.exec();
}
谢谢您的帮助,但是我得到了对
main window::sleepLoop(long)\**的*未定义引用错误,并且也在moc文件中。我已经声明了该函数。我如何解决这个问题?
case 11:_t->sleepLoop(*重新解释\u cast