天天看點

解決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();//優化攝像頭打開速度
     });}      

繼續閱讀