在 Qt 中创建旋转进度条
Posted
技术标签:
【中文标题】在 Qt 中创建旋转进度条【英文标题】:Create Spin Progress bar in Qt 【发布时间】:2012-11-15 07:33:33 【问题描述】:,我想显示进度条,就像加载时出现的那样。请找图片
我的代码是这样的
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
(旋转)或类似的东西来代替吗
【问题讨论】:
我不明白你的问题。您想知道如何实现它还是要我们找到您可以使用的图像? 您可以使用 gif 图像代替 QProgressbar ..... 示例图像可以在 google 上轻松找到 gif 图像格式并用于您的目的..... @JustMaximumPower,感谢您的评论。现在我正在使用 QProgressbar 做。我想显示一些加载进度条而不是显示 % 进程。 【参考方案1】:查看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 只是为了旋转负载指示器,这对我来说似乎有点矫枉过正。我会使用 QMovie
和 QLabel
来显示包含微调器的动画 GIF 图像:
QMovie* spinnerMovie = new QMovie(":/spinner.gif");
QLabel *spinnerLabel = new QLabel(this);
spinnerLabel->setMovie(spinnerMovie);
spinnerMovie->start();
您还应该查看Qt Resource System 的文档,以了解如何将图像与您的应用程序捆绑以及如何加载它们。
【讨论】:
我是 Qt 新手,您显示的代码是 QML,我如何在我的 Qt 代码中使用它。请建议我 那么请更新您的问题以包含您希望集成进度指示器的代码部分。模糊的问题导致同样模糊的答案。你也用 QML 标记了你的问题,你知道吗? @sebasgo ,我已经编辑了我的任务,你可以检查一下吗 有没有办法让QMovie
与屏幕上的小部件重叠?即让它漂浮在他们身上【参考方案2】:
要更改光标,您必须使用setCursor 函数或setOverrideCursor 才能将其应用于应用程序。您可以使用 QPixmap 作为构造函数参数来构造任何您想要的游标。
为了实现动画效果,您需要QTimer。在每个计时器事件中,您都必须更改光标的像素图才能获得动画的感觉。
【讨论】:
【参考方案3】:尝试使用纯 C++ 实现的 Qml Busy Indicator: http://qt-project.org/wiki/Busy-Indicator-for-QML
【讨论】:
以上是关于在 Qt 中创建旋转进度条的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 中创建进度条而不使用 xml 文件中的进度条小部件?
在 Spark Azure Databricks 中创建自定义进度条指示器