QGraphicsView 滚动条策略未按预期工作
Posted
技术标签:
【中文标题】QGraphicsView 滚动条策略未按预期工作【英文标题】:QGraphicsView scroll bar policy not working as expected 【发布时间】:2012-04-16 17:55:19 【问题描述】:我有一个垂直滚动条策略为“ScrollBarAlwaysOff”的 QGraphicsView。问题是当我调整视图的大小时(通过 QSplitter 或仅通过调整窗口的大小),视图的右侧经常会出现一个空白区域。这是一个带有红色背景和黑色 QGraphicsRectItem 的示例:
#include <QtGui>
class MainWindow : public QMainWindow
public:
MainWindow()
QGraphicsScene *scene = new QGraphicsScene(this);
QRectF rect(-100, -100, 200, 200);
QGraphicsRectItem *rectItem = new QGraphicsRectItem(rect);
rectItem->setBrush(QBrush(Qt::black));
scene->addItem(rectItem);
scene->setSceneRect(rect); //commenting this out doesn't make a difference
QGraphicsView *view = new QGraphicsView(this);
view->setBackgroundBrush(QBrush(Qt::red));
view->setTransformationAnchor(QGraphicsView::AnchorViewCenter);
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view->setScene(scene);
setCentralWidget(view);
;
int main(int argc, char *argv[])
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
问题如下:
我该如何解决这个问题?
编辑:点击这里将图片放大一点:http://i.stack.imgur.com/HeWHJ.png
【问题讨论】:
不幸的是,我无法在 PyQt 中重现这种行为。使用 PyQt 4.9.1 和 Qt 4.8.1。对我来说,当它小于 QGraphicsItem 大小时,我会得到恒定的黑色。显然,当它大于 QGraphicItem 大小时是红色 @jdi 感谢您检查它。我正在使用 4.8.0。我会更新到 4.8.1 看看能不能解决。 【参考方案1】:我试了一下,发现如果将矩形更改为 (0, 0, 300, 300),它可以正常工作。似乎QGraphicsView
在处理带有负左上场景矩形的滚动条更新时遇到问题。您应该向 Qt 提交错误报告。
【讨论】:
你在哪个版本的 Qt 上测试过这个?我在 4.8.1 中根本没有看到这个问题 这确实为我解决了问题。很奇怪。正如@jdi 提到的,这可能是版本问题。如果我更新后它仍然存在,我会将其报告为错误(并在此处)。 是的。它现在处于 4.8.1 和 5.0 alpha 版本中。至少在 C++ 绑定上。 我猜python绑定以某种方式解决了这个问题。奇怪的是,它仍然在下面使用相同的 c++以上是关于QGraphicsView 滚动条策略未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章
UICompositionalLayout 未按预期工作(垂直表格滚动 + 水平分页)