平移
/**
* @brief 平移测试
*/
void Widget::on_ptn_start_clicked()
{
qDebug()<<"on_ptn_start_clicked";
//pos
QPropertyAnimation *pPosAnimation = new QPropertyAnimation(ui->posButton, "pos");
pPosAnimation->setDuration(3000);
pPosAnimation->setStartValue(QPoint(ui->posButton->x(), ui->posButton->y()));
pPosAnimation->setEndValue(QPoint(ui->posButton->x() + 300, ui->posButton->y()));
pPosAnimation->setEasingCurve(QEasingCurve::InOutQuad);
pPosAnimation->start();
}
缩放
/**
* @brief 缩放测试
*/
void Widget::on_btn_zoom_clicked()
{
QPropertyAnimation *pScaleAnimation = new QPropertyAnimation(ui->pushButton_zoom, "geometry");
pScaleAnimation->setDuration(1000);
//scale
if(m_Enlarge){
//放大
m_Enlarge = false;
pScaleAnimation->setStartValue(ui->pushButton_zoom->geometry());
pScaleAnimation->setEndValue(QRect(ui->pushButton_zoom->x(),ui->pushButton_zoom->y(),
ui->pushButton_zoom->width()*5, ui->pushButton_zoom->height()*5));
ui->btn_zoom->setText("缩小");
}
else {
//缩小
m_Enlarge = true;
pScaleAnimation->setStartValue(ui->pushButton_zoom->geometry()); //QRect(10, 410, 250, 200)
pScaleAnimation->setEndValue(QRect(ui->pushButton_zoom->x(),ui->pushButton_zoom->y(),
ui->pushButton_zoom->width()/5, ui->pushButton_zoom->height()/5));
ui->btn_zoom->setText("放大");
}
pScaleAnimation->start();
}
透明
/**
* @brief 窗口透明演示
*/
void Widget::on_btn_opacity_clicked()
{
//opacity
QGraphicsOpacityEffect *pButtonOpacity = new QGraphicsOpacityEffect(this);
QPropertyAnimation *pOpacityAnimation = new QPropertyAnimation(pButtonOpacity, "opacity");
if(m_Display){
//设置展示
pButtonOpacity->setOpacity(0);
ui->pushButton_opacity->setGraphicsEffect(pButtonOpacity);
pOpacityAnimation->setDuration(1000);
pOpacityAnimation->setStartValue(0);
pOpacityAnimation->setEndValue(1);
m_Display = false;
ui->btn_opacity->setText("透明");
}
else {
//设置透明
pButtonOpacity->setOpacity(1);
ui->pushButton_opacity->setGraphicsEffect(pButtonOpacity);
pOpacityAnimation->setDuration(1000);
pOpacityAnimation->setStartValue(1);
pOpacityAnimation->setEndValue(0);
m_Display = true;
ui->btn_opacity->setText("显示");
}
pOpacityAnimation->start();
}
注意!注意!注意
QGraphicsEffect 的子类(QGraphicsOpacityEffect,QGraphicsDropShadowEffect)只能在一个QWidget中安装一次 再次调用 setGraphicsEffect 时 之前安装的效果将被卸载
也就是透明效果和上篇讲解的阴影效果不能同时出现在一个QWidget中