QGraphicsView
を使用してビデオを表示するビデオプレーヤーを開発しています。は、現在のビデオ フレームを含む単一のをQGraphicsView
表示しています。ビューの背景は黒です。QGraphicsScene
QGraphicsPixmapItem
フレームがビューよりも小さい限り、すべて問題なく、ビデオ フレームがビューの中央に表示され、ビューの残りの部分は黒くなります。ビューがフレームと同じサイズの場合、フレームのみが表示され、(明らかに) 背景は表示されません。ビデオ フレームがビューよりも大きい場合、スクロールバーが表示されるので、ユーザーはスクロールしてフレームの他の部分を見ることができます。
問題: スクロールバーが表示されているときに、ビデオ フレームを超えてスクロールすることができます。下部と右側に 8 ピクセルの余白があり、背景が表示されます。ビデオ フレームがビューよりも大きい場合、背景が表示されず、ビデオ フレームを超えてスクロールできないようにする必要があります。
私は、問題を示す短いソース コードに問題を縮小し、緑の背景に 200x200 ピクセルの赤QPixmap
を表示しました。QGraphicsView
#include <QtGui/QApplication>
#include <QMainWindow>
#include <QGraphicsScene>
#include <QGraphicsView>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow window;
QPixmap pixmap(200, 200);
pixmap.fill(QColor(255, 0, 0));
QGraphicsScene scene(&window);
scene.addPixmap(pixmap);
QGraphicsView view(&window);
view.setBackgroundBrush(QColor(0, 255, 0));
view.setScene(&scene);
window.setCentralWidget(&view);
window.show();
window.resize(199, 199);
return app.exec();
}
問題の画像も作成しました (サンプル コードには黒い境界線が含まれていません): http://imgur.com/4X5eyhC
左側のウィンドウでQGraphicsView
は長方形と同じサイズで、右側のウィンドウでは少し小さいため、スクロールバーが表示されます。また、背景も表示されます (表示されるべきではありません)。
私はすでに SceneRect と の他のさまざまな属性を設定しようとしましたがQWidget
、問題を変更するものは何も見つかりませんでした。QGraphicsView
QGraphicsScene
Qt/KDE バージョンにバグがある可能性を排除するために、仮想マシンでサンプルの問題を実行することも試みました。
スクロールバーがあるときに背景が突然表示される理由がわかりません。どうすればそれを取り除くことができますか?それが不可能な場合、どうすればそれを回避できるか考えていますか?
前もって感謝します。