我正在开发一个视频播放器,使用
只要帧小于视图,则一切正常,视频帧将显示在视图中心,其余视图为黑色。当视图与帧大小相同时,仅显示帧,没有背景(显然)。当视频帧大于视图时,将显示滚动条,以便用户可以滚动查看帧的其他部分。
问题:当显示滚动条时,可能会卷过视频帧。底部和右侧有 8 个像素的边距显示了背景。如果视频帧大于视图,则不应该显示任何背景,并且不应该超出视频帧的范围滚动。
我简化了问题,在短代码中演示了这个问题,显示了一个带有绿色背景的200x200 px红色
QGraphicsView
来显示视频。 QGraphicsView
显示了一个只包含当前视频帧的 QGraphicsPixmapItem
的QGraphicsScene
。视图的背景是黑色。只要帧小于视图,则一切正常,视频帧将显示在视图中心,其余视图为黑色。当视图与帧大小相同时,仅显示帧,没有背景(显然)。当视频帧大于视图时,将显示滚动条,以便用户可以滚动查看帧的其他部分。
问题:当显示滚动条时,可能会卷过视频帧。底部和右侧有 8 个像素的边距显示了背景。如果视频帧大于视图,则不应该显示任何背景,并且不应该超出视频帧的范围滚动。
我简化了问题,在短代码中演示了这个问题,显示了一个带有绿色背景的200x200 px红色
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
与矩形大小相同,在右侧窗口中,它略小,因此显示滚动条。并且背景也可见(不应该可见)。
我已经尝试设置QWidget
、QGraphicsView
和QGraphicsScene
的sceneRect和各种其他属性,但没有发现可以解决这个问题的方法。
我还尝试在虚拟机中运行示例问题,以排除我的Qt/KDE版本存在缺陷的可能性。
我不知道为什么滚动条出现时背景会突然出现。我该如何摆脱它?如果无法实现,你有什么解决办法?
谢谢您提前帮忙。