在Qt中创建旋转进度条

时间:2012-11-15 07:33:34

标签: qt qml

在Qt中创建旋转进度条,我想显示加载时出现的进度条。请查找图片enter image description here

我的代码就像这样

    QProgressBar *pgbar = new QProgressBar();
    pgbar->resize(500,25);
    pgbar->setOrientation(Qt::Horizontal);
    pgbar->setRange(0,99);
    pgbar->setValue(10);
    pgbar->show();
    installOnDevice(destinationSavePath);
    pgbar->hide();

此处installOnDevice(destinationSavePath);需要时间来处理。目前我正在展示Processbar,我不想展示processbar。我不能替换显示loading image(旋转)或类似

的某些进度

3 个答案:

答案 0 :(得分:6)

查看Twitter Mobile示例应用程序。在文件demos/declarative/twitter/qml/twitter/TwitterCore/Loading.qml中,在QML中有一个您想要实现的确切实现:

import QtQuick 1.0

Image {
    id: loading
    source: "images/loading.png"
    NumberAnimation on rotation {
         from: 0
         to: 360
         running: loading.visible == true
         loops: Animation.Infinite
         duration: 900
     }
}

更新1(反映新发布的代码):

在你的基于Qt Widgets的应用程序中使用QML只是为了一个旋转负载指示器对我来说似乎有些过分。我会将QMovieQLabel结合使用,以显示包含微调器的动画GIF图像:

QMovie* spinnerMovie = new QMovie(":/spinner.gif");
QLabel *spinnerLabel = new QLabel(this);
spinnerLabel->setMovie(spinnerMovie);
spinnerMovie->start();

您还应该查看Qt Resource System的文档,了解如何将图像与应用程序捆绑在一起以及如何加载它们。

答案 1 :(得分:2)

为了更改光标,您必须使用setCursor函数或setOverrideCursor才能将其应用于应用程序。您可以使用QPixmap作为构造函数参数构造所需的任何游标。

为了获得动画效果,您需要QTimer。在每个计时器事件中,您必须更改光标的像素图,以便给出动画效果。

答案 2 :(得分:1)

尝试使用纯C ++实现的Qml Busy Indicator:     http://qt-project.org/wiki/Busy-Indicator-for-QML