-1

QGraphicsフレームワークを使用してWebビューを表示するこの埋め込みQtアプリケーションがあります。Webビューのサイズは1280*720ピクセルであり、QGraphicsViewはこれらの座標(0,0、1280x720)でシーンをレンダリングするように設定されています。

右上隅(1100,50)に読み込みインジケーターを追加しようとしています。これは、QTimeLineを使用して時々回転する単純なPNG画像です。

コードは次のようになります(インターネットで変換のトリックを見つけました):

// loading_indic initialization:
QGraphicsPixmapItem *loading_indic = 
             new QGraphicsPixmapItem( QPixmap("./resources/loading_64.png") );
loading_indic->setPos(QPoint(1100.0,50.0));

QTimeLine timeline = new QTimeLine(1000);
timeline->setFrameRange(0,steps);
connect(timeline, SIGNAL(valueChanged(qreal)), this, SLOT(updateStep(qreal)));
timeline->start();

// called at each step of a QTimeLine:
void updateStep(qreal step) {
    QTransform transformation = QTransform()
                // place coordinate system to the center of the image
                .translate(  width/2.0,  height/2.0) 
                // rotate the image in this new coordinate system
                .rotate(new_angle) 
                // replace the coordinate system to the original
                .translate( -width/2.0, -height/2.0);

    loading_indic->setTransform(transformation);
}

さて、私の問題は、これを行うと、WebViewも翻訳されているように見え、すべてが画面の中央に表示されることです。

結果は次のようになります。

問題

Webビューは画面全体に表示されるはずであり、読み込みインジケーターは右上にあるはずです...

私のシーンには2つのアイテムしか含まれていません。

Scene
  |
  \____ QGraphicsWebView
  \____ QGraphicsPixmapItem // loading indicator

私はここで何が間違っているのですか?

4

1 に答える 1

0

問題を解決しました。理由はわかりませんが、このPNGアイテムをシーンに追加すると、シーンの長方形が台無しになっていたようです。

これを行う:

_scene.addItem(loading_indic);
loading_indic->setPos(1100.0, 50.0);
_scene.setSceneRect(0.0,0.0,1280.0,720.0); // resets the scene's rectangle ?!
loading_indic->startAnimation();

問題を解決しました。これで、アイテムが画面に正しく配置されました。

誰かがこれについて説明を持っているなら、私は喜んで彼の答えを受け入れます。

于 2012-10-31T10:34:33.910 に答える