4

Qt で Spin プログレス バーを作成し、ロード中に表示されるようなプログレス バーを表示したい。画像を見つけてくださいここに画像の説明を入力

私のコードは次のようになります

    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が、表示したくありませんprocessbarloading image(Rotating)またはそれに類似したものを示す進行状況に置き換えることはできませんか

4

3 に答える 3

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 を使用するのは、やり過ぎに思えます。QMovieを と組み合わせて使用​​して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 ビジー インジケーターを試してください: http://qt-project.org/wiki/Busy-Indicator-for-QML

于 2013-02-13T03:59:16.853 に答える