qt5 MinGw32を使用して客観的な注釈のツールを作成して、ビデオファイルのオブジェクトに注釈を付けて再生中に表示することができます。したがってQGraphicsSceneは、関数の実装に継承されます。qt5 QGraphicsScene setBackgroundBrush()は、頻繁に呼び出されたときに常に機能しません。
QGraphicsSceneの背景を頻繁に変更すると(30fpsなど)、何か問題が発生します。ほとんどの場合、予想通りに動作し、背景が動かない場合があります。ここで
は私のコードです:
void MyGraphicsScene::UpdateFrame(QImage image)
{
QPixmap pixmap = QPixmap::fromImage(image);
//fix the view's size and scene's size
views().first()->setFixedSize(pixmap.size());
setSceneRect(0,0, pixmap.width(), pixmap.height());
setBackgroundBrush(QBrush(pixmap));
}
...
//In another thread
void Thread::run()
{
...
myScene.UpdateFrame(newImage);
...
}
私はQtのドキュメントを検索し、何の答えを見つけていません。
しかし、奇妙なものがある:間違ったことが発生したときに
は、私は背景が変化し続ける見つけるが、私は別の画面にアプリを移動しない限り、それは、画面上の変化を示さなかった(私は2つを持っています画面)。しかし、アプリケーションを移動すると、QGraphicsSceneの背景は一度変更され、その後は静的になります。
バックグラウンドは変更されていますが再描画されないと思いますので、update()を使用しましたが、役に立たなかったです。
私は機会を再現することができませんでした、それは起こる、somtimesではありません。
どのような方法を表現する必要がありますか?あるいは私は方法を間違った方法で呼びましたか?それとも、別のアプローチがありますか?
ご協力いただきありがとうございます。
投稿コードからは、非GUIスレッドで 'QPixmap'機能を使用しているようです。それは許可されていません(あなたはおそらくコンソールで警告を受けるべきです)。 –
@ G.M。ありがとう。私はちょうど 'QImage'を使って' QPixmap'ではなくバックグラウンドを設定しています。しかし、私はなぜそれが起こるのかわからないので、バックグラウンドがもはや詰まっていないことを確認できませんでした。ところで、コンソールは何も暖かさを示していません。 – foo