天天看点

解决QPropertyAnimation动画小bug

Qt的动画效果还是不错的,一般不会出现什么问题。但是特殊情况还是有问题的:

如果在动画执行完立即执行耗时操作,就会出现这个问题。

看问题:

代码:

connect(m_showAnimation, SIGNAL(finished()), this, SLOT(onShowAnimationEnd()));
void XXXXXXXXXXXXXXXXXXX::onShowAnimationEnd() {
m_cameraPropertyWindow->openCamera();//优化摄像头打开速度
}      

在动画执行完,执行了一个比较耗时的操作,打开摄像头。按照理论来说,应该是执行完动画效果,再执行打开摄像头,再执行别的什么操作。但是实际效果是,动画还没有执行完就开始打开摄像头。

connect(m_showAnimation, SIGNAL(valueChanged(QVariant)), this, SLOT(onShowValueChangeed(QVariant)));
void CbCameraView::onShowValueChangeed(QVariant var) {
qDebug() << "onShowValueChangeed:" <<QDateTime::currentDateTime();
 }      
void XXXXXXXXXXXXXXXXXXX::onShowAnimationEnd() {
    QTimer::singleShot(3, [=]() {
         m_cameraPropertyWindow->openCamera();//优化摄像头打开速度
     });}      

继续阅读