Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt-不带滚动条的QGraphicsView_C++_Qt - Fatal编程技术网

C++ Qt-不带滚动条的QGraphicsView

C++ Qt-不带滚动条的QGraphicsView,c++,qt,C++,Qt,我正在尝试使用QGraphicscene在全视图中显示图片。但当我把QGraphicscene放到QGraphicsView中时,我得到了一个滚动条。我尝试了很多方法,但都失败了。那么有谁能告诉我如何在没有滚动条的情况下获得完整的视图呢 QGraphicsView v; v.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); v.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); 要在隐

我正在尝试使用QGraphicscene在全视图中显示图片。但当我把QGraphicscene放到QGraphicsView中时,我得到了一个滚动条。我尝试了很多方法,但都失败了。那么有谁能告诉我如何在没有滚动条的情况下获得完整的视图呢

QGraphicsView v;
v.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
v.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

要在隐藏滚动条后以编程方式调整滚动条,请使用
v.ensureRevibible()

的一个重载,因为场景大于图形视图中的可用区域,因此可能会得到滚动条。默认情况下,QGraphicsView具有1像素的边距。要解决此问题,您可以尝试:

QRect rcontent = graphicsView.contentsRect();
graphicsView.setSceneRect(0, 0, rcontent.width(), rcontent.height());

我之所以得到滚动条,是因为我手动将scene rect设置为我要添加的图形项的大小——它与QGraphicsView小部件一样大。我没有考虑边距。

有没有办法禁用1像素边距?你的代码为我解决了这个问题,但它看起来仍然像是一个坏默认的明显修复;此页边距在fitInView中硬编码(参见QTBUG-11945)。摆脱它的唯一方法是编写自己的
fitInView
。有人讨论过如何通过API来公开利润,但还没有将其纳入任何Qt版本中。