uj5u.com熱心網友回復:
這個應該要3D實作吧!叫什么coverflow效果!uj5u.com熱心網友回復:
這個其實就是qt的影片功能。使用到的類有:QParallelAnimationGroup, QSequentialAnimationGroup,QPropertyAnimation。可以查看qt助手這些類的使用。圖片的每一項是一個label中顯示圖片,當點擊左右按鈕時,比如點擊右按鈕,所有label往右移動一定距離,就組成了移動預覽功能。
我這邊有相關示例代碼,可參考一下:
void Guide::SetCapRetAnimation()
{
QSequentialAnimationGroup *group = new QSequentialAnimationGroup(this);
int msec = 2000;
int hx = 160, hw = 225, hh = 221;
QPropertyAnimation *lhAnima = new QPropertyAnimation(ui->img_label, "geometry");
SetAnimationValue(lhAnima, QRect(hx, 595, hw, hh), QRect(hx, ui->img_label->y(), hw, hh), msec);
int sx = 695;
QPropertyAnimation *rhAnima = new QPropertyAnimation(ui->star_img_label, "geometry");
SetAnimationValue(rhAnima, QRect(sx, 595, hw, hh), QRect(sx, ui->star_img_label->y(), hw, hh), msec);
int lnx = ui->img_name_label->x(), nw = ui->img_name_label->width(), nh = ui->img_name_label->height();
QPropertyAnimation *lnAnima = new QPropertyAnimation(ui->img_name_label, "geometry");
SetAnimationValue(lnAnima, QRect(lnx, 596, nw, nh), QRect(lnx, ui->img_name_label->y(), nw, nh), msec);
int rnx = ui->star_name_label->x();
QPropertyAnimation *rnAnima = new QPropertyAnimation(ui->star_name_label, "geometry");
SetAnimationValue(rnAnima, QRect(rnx, 596, nw, nh), QRect(rnx, ui->star_name_label->y(), nw, nh), msec);
int vx = 411, vy = 250, vw = 258, vh = 73;
QPropertyAnimation *vaAnima = new QPropertyAnimation(ui->vs_label, "geometry");
SetAnimationValue(vaAnima, QRect(vx, 596, vw, vh), QRect(vx, vy, vw, vh), msec);
//connect(vaAnima, SIGNAL(valueChanged(const QVariant&)), this, SLOT(AnimaValueChange(const QVariant&)));
int tx = 0, ty = 0, tw = 1080, th = 126;
QPropertyAnimation *tlAnima = new QPropertyAnimation(ui->titleW, "geometry");
SetAnimationValue(tlAnima, QRect(tx, 596, tw, th), QRect(ui->titleW->x(), ty, tw, th), msec);
QParallelAnimationGroup *parGroup = new QParallelAnimationGroup();
parGroup->addAnimation(lhAnima);
parGroup->addAnimation(rhAnima);
parGroup->addAnimation(lnAnima);
parGroup->addAnimation(rnAnima);
parGroup->addAnimation(vaAnima);
parGroup->addAnimation(tlAnima);
group->addAnimation(parGroup);
group->start(QAbstractAnimation::DeleteWhenStopped);
}
void Guide::SetAnimationValue(QPropertyAnimation *animation, const QVariant &startval,
const QVariant &endval, int msec)
{
animation->setDuration(msec);
animation->setStartValue(startval);
animation->setEndValue(endval);
animation->setEasingCurve(QEasingCurve::InOutBounce);
}
其實好簡單,呼叫qt影片相關類的介面即可。復雜的作業是要算出每一步影片,比如滑動是要從哪里運動到哪里,這樣設定初始位置和結束位置即可。
uj5u.com熱心網友回復:
謝謝你的回復,在QT上想做這個效果了,是左右滑動切換圖片,然后點擊圖片產生對應的事件請問這個能實作嗎?
除了QML 還有其他方法嗎
uj5u.com熱心網友回復:
左右滑動切換圖片就可以用qt影片功能實作,點擊圖片產生對應的事件可以使用安裝控制元件過濾器方法實作。不需要QML啊,直接qt代碼就可以實作。
uj5u.com熱心網友回復:
謝謝你的回復,在QT上想做這個效果了,是左右滑動切換圖片,然后點擊圖片產生對應的事件
請問這個能實作嗎?
除了QML 還有其他方法嗎
左右滑動切換圖片就可以用qt影片功能實作,點擊圖片產生對應的事件可以使用安裝控制元件過濾器方法實作。不需要QML啊,直接qt代碼就可以實作。
請問有例子嗎?想研究研究
uj5u.com熱心網友回復:
你好,有代碼嗎,借鑒下。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/281056.html
標籤:Qt
上一篇:app應用-性能測驗
