Qt之QParallelAnimationGroup

简介: 简述QParallelAnimationGroup类提供动画的并行组。QParallelAnimationGroup - 一个动画容器,当它启动的时候它里面的所有动画也启动,即:并行运行所有动画,当持续时间最长的动画完成时动画组也随之完成。简述详细描述示例效果源码更多参考详细描述QParallelAnimationGro

简述

QParallelAnimationGroup类提供动画的并行组。

QParallelAnimationGroup - 一个动画容器,当它启动的时候它里面的所有动画也启动,即:并行运行所有动画,当持续时间最长的动画完成时动画组也随之完成。

详细描述

QParallelAnimationGroup可以被当做任何其它的QAbstractAnimation动画,例如:暂停、重置、添加到其它动画组中。

QParallelAnimationGroup *group = new QParallelAnimationGroup;
group->addAnimation(anim1);
group->addAnimation(anim2);

group->start();

这个例子中,anim1、anim2是QPropertyAnimation。

示例

下面,我们通过QParallelAnimationGroup 来构建一个并行动画组,并添加属性动画QPropertyAnimation,这里也可以使用addAnimation()添加其它动画/动画组,就不予演示了。

效果

这里写图片描述

源码

MainWindow::MainWindow(QWidget *parent)
    : CustomWindow(parent)
{
    ...

    QPushButton *pStartButton = new QPushButton(this);
    pStartButton->setText(QString::fromLocal8Bit("开始动画"));

    QList<QLabel *> list;
    QStringList strList;
    strList << QString::fromLocal8Bit("一去丶二三里") << QString::fromLocal8Bit("青春不老,奋斗不止");

    for (int i = 0; i < strList.count(); ++i)
    {
        QLabel *pLabel = new QLabel(this);
        pLabel->setText(strList.at(i));
        pLabel->setAlignment(Qt::AlignCenter);
        pLabel->setStyleSheet("color: rgb(0, 160, 230);");
        list.append(pLabel);
    }

    // 动画一
    QPropertyAnimation *pAnimation1 = new QPropertyAnimation(list.at(0), "geometry");
    pAnimation1->setDuration(1000);
    pAnimation1->setStartValue(QRect(0, 0, 100, 30));
    pAnimation1->setEndValue(QRect(120, 130, 100, 30));
    pAnimation1->setEasingCurve(QEasingCurve::OutBounce);

    // 动画二
    QPropertyAnimation *pAnimation2 = new QPropertyAnimation(list.at(1), "geometry");
    pAnimation2->setDuration(1000);
    pAnimation2->setStartValue(QRect(120, 130, 120, 30));
    pAnimation2->setEndValue(QRect(170, 0, 120, 30));
    pAnimation2->setEasingCurve(QEasingCurve::OutInCirc);

    m_pGroup = new QParallelAnimationGroup(this);

    // 添加动画
    m_pGroup->addAnimation(pAnimation1);
    m_pGroup->addAnimation(pAnimation2);

    // 循环2次
    m_pGroup->setLoopCount(2);

    connect(pStartButton, SIGNAL(clicked(bool)), this, SLOT(startAnimation()));

    ...
}

// 开始动画
void MainWindow::startAnimation()
{
    m_pGroup->start();
}

更多参考

目录
相关文章
|
5月前
|
存储 编译器 C++
QT之QFlags详解
QT之QFlags详解
198 0
|
5月前
|
Linux 定位技术 C++
【Qt】-学Qt前的准备
【Qt】-学Qt前的准备
|
5月前
|
前端开发 编译器 开发工具
Qt
Qt
308 0
|
11月前
26 QT - 事件过滤器
26 QT - 事件过滤器
40 0
|
网络协议 Java PHP
|
数据安全/隐私保护
Qt之QUrl
简述 QUrl 类提供了一个方便的接口使用 URLs。 它可以解析和构造编码和未编码形式的 URLs。QUrl 也支持国际化域名(IDNs)。 简述 详细描述 错误检查 字符转换 URL格式 scheme Authority user info path query fragment 深入使用 相对路径 用户输入 文件名 主机端口 本地文件 百分比编码
6320 0
|
索引
Qt之QToolBox
简述 QToolBox类提供了一个列(选项卡式的)部件条目。 QToolBox可以在一个tab列上显示另外一个,并且当前的item显示在当前的tab下面。每个tab都在tab列中有一个索引位置。tab的item是一个QWidget 。 简述 详细描述 使用 效果 源码 详细描述 每个item都有一个itemText()、一个可选的itemI
2514 0
Qt之QDateEdit和QTimeEdit
简述 QDateEdit类提供了一个部件,用于编辑日期。QTimeEdit类提供了一个部件,用于编辑时间。 简述 详细描述 基本使用 各司其职 莫强求 更多参考 详细描述 QDateEdit和QTimeEdit均继承自QDateTimeEdit,许多特性和功能都有QDateTimeEdit提供。这些都是相关属性: QDateEdit da
2919 0
|
Unix Linux Windows
Qt之QLocalServer
简述 QLocalServer提供了一个基于本地socket的server。 QLocalServer可以接受来自本地socket的连接。通过调用listen(),让server监听来自特定key的连接。 调用nextPendingConnection()来接受一个挂起(等待)的连接作为一个已连接的QLocalSocket。函数返一个QLocalSocket指针,可以被
2046 0