在 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 只是为了旋转负载指示器,这对我来说似乎有点矫枉过正。我会使用 QMovieQLabel 来显示包含微调器的动画 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 中创建旋转进度条的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BootStrap 中创建一个与边缘有间距的进度条

在 PHP 中创建文件进度条

如何在 android 中创建进度条而不使用 xml 文件中的进度条小部件?

在 Spark Azure Databricks 中创建自定义进度条指示器

如何在没有 Jquery-ui 且没有 Bootstrap 的情况下在 angularjs 中创建自定义进度条?

如何使用 QProgressBar