在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
(旋转)或类似
答案 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
}
}
在你的基于Qt Widgets的应用程序中使用QML只是为了一个旋转负载指示器对我来说似乎有些过分。我会将QMovie
与QLabel
结合使用,以显示包含微调器的动画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