3

私は自分の問題の解決策を探しましたが、何もありません...読み込みステータスのために、1つの QLabel で GIF アニメーションを含む QMovie を使用しています。それは簡単で、私はこのリンクで学びました: GIF animation in Qt、これは、たとえば、1 つのラベルを所有し、そのメニューの QLabel に QMovie を配置するよりも、メニューを開くと完全に機能します。

私の問題は、読み込みステータス用の特定の UI を作成したことです。一部の UI が開くのが遅いことがわかっている場合は、読み込みステータス UI を表示し、UI が開いて終了すると、読み込みステータス UI を閉じます。このローディング ステータス UI に、1 つの QMovie (GIF アニメーション) と「Loading...」と書かれたシンプルな QLabel を配置しました。非常にシンプルですね。しかし、この特定の UI を使用すると、QMovie が機能しません。実際、それはループにとどまりません...私が開いているよりもUIでQMovieを使用すると、QMovieはループにとどまります。

私の英語はあまり上手ではありませんが、私の問題を理解できますか? =/

リンクの同じコードを使用しています:

this->m_pMovie = new QMovie(":/ui/images/my_image_loading.gif");
this->m_pMovie->setScaledSize(QSize(50, 50));
this->ui->labelImageLoading->setMovie(this->m_pMovie);
this->m_pMovie->start();

誰かそれについて知っていますか?

ありがとうございました...

4

1 に答える 1

3

QMovie の使用方法はすべて問題ないようです。これは推測にすぎませんが、GUI スレッドが忙しすぎて QMovie が更新されていないのではないかと考えています。読み込みに時間がかかる UI がある場合、その遅さは、GUI スレッドで多くの処理を消費していることが原因である可能性があります。これは、QMovie を更新しようとしているのと同じスレッドです。結果: QMovie は、同じ GUI スレッドに依存して更新を描画するため、更新されません。

UI ロード プロセスのどこかに をいくつか呼び出すことQApplication::processEvents()ができれば、ムービーが更新されます。でもガタガタかも。

それ以外の場合、これらの UI の読み込みを高速化する方法を見つける以外にできることはほとんどありません。(レイアウトだけでなく、必要に応じて読み込まれるタブに分割するなどして、それらを別のウィンドウに分割します。)

于 2011-12-13T18:34:59.977 に答える