4

在 Qt 中创建旋转进度条,我想显示进度条,就像加载时出现的进度条一样。请查找图片在此处输入图像描述

我的代码是这样的

    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(旋转)或类似的东西来代替吗

4

3 回答 3

6

查看Twitter 移动示例应用程序。在文件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 作为旋转负载指示器对我来说似乎有点过分了。我将 aQMovie与 a 结合使用QLabel来显示包含微调器的动画 GIF 图像:

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

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

于 2012-11-15T10:02:30.597 回答
2

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

为了实现动画效果,您需要一个QTimer。在每个计时器事件中,您都必须更改光标的像素图以提供动画的感觉。

于 2012-11-15T08:32:31.753 回答
1

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

于 2013-02-13T03:59:16.853 回答